色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 解析json到dictionary

榮姿康1年前9瀏覽0評論

C語言作為一門廣泛應用于系統編程的高級編程語言,在處理JSON數據方面也有其自己的優勢。在C語言中,我們可以通過解析JSON數據將其轉換為Dictionary(字典)的形式,便于后續的數據操作。

在實現這一過程中,我們可以借助第三方的JSON解析庫,在本文中,我們以cJSON為例,演示如何將JSON數據解析為Dictionary。

// 以下代碼基于cJSON解析庫,需要在引用前進行安裝
#include#include#include#include "cJSON.h"
int main()
{
// 假設要解析的JSON數據如下
char *json = "{\n"
"\"name\":\"小明\",\n"
"\"age\":18,\n"
"\"gender\":1,\n"
"\"score\":[85, 90, 95]\n"
"}";
// 解析JSON數據,并將其轉換為cJSON對象
cJSON *json_obj = cJSON_Parse(json);
// 轉換成功后,我們可以根據JSON數據的結構,使用cJSON對象中提供的函數獲得其相應的數據內容
char *name = cJSON_GetObjectItem(json_obj, "name")->valuestring;
int age = cJSON_GetObjectItem(json_obj, "age")->valueint;
int gender = cJSON_GetObjectItem(json_obj, "gender")->valueint;
// 對于JSON中的數組,我們需要遍歷向其轉換為cJSON數組對象,再遍歷數組對象獲得數組元素的內容
cJSON *score_arr = cJSON_GetObjectItem(json_obj, "score");
cJSON *score_obj = NULL;
int i, score_len = cJSON_GetArraySize(score_arr);
int *score = (int *)malloc(score_len * sizeof(int));
for (i = 0; i< score_len; i++) {
score_obj = cJSON_GetArrayItem(score_arr, i);
score[i] = score_obj->valueint;
}
// 將解析到的數據存儲到Dictionary中
struct dict {
char *name;
int age;
int gender;
int *score;
};
struct dict person = {name, age, gender, score};
// 輸出Dictionary中的數據內容
printf("name: %s\n", person.name);
printf("age: %d\n", person.age);
printf("gender: %d\n", person.gender);
printf("score: ");
for (i = 0; i< score_len; i++)
printf("%d ", person.score[i]);
printf("\n");
// 釋放內存
free(score);
return 0;
}

通過以上代碼,我們成功地將JSON數據解析為Dictionary,并存儲在了結構體中,方便我們進行數據操作。