欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 解析json到dictionary

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

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

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

// 以下代碼基于cJSON解析庫,需要在引用前進(jìn)行安裝
#include#include#include#include "cJSON.h"
int main()
{
// 假設(shè)要解析的JSON數(shù)據(jù)如下
char *json = "{\n"
"\"name\":\"小明\",\n"
"\"age\":18,\n"
"\"gender\":1,\n"
"\"score\":[85, 90, 95]\n"
"}";
// 解析JSON數(shù)據(jù),并將其轉(zhuǎn)換為cJSON對象
cJSON *json_obj = cJSON_Parse(json);
// 轉(zhuǎn)換成功后,我們可以根據(jù)JSON數(shù)據(jù)的結(jié)構(gòu),使用cJSON對象中提供的函數(shù)獲得其相應(yīng)的數(shù)據(jù)內(nèi)容
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中的數(shù)組,我們需要遍歷向其轉(zhuǎn)換為cJSON數(shù)組對象,再遍歷數(shù)組對象獲得數(shù)組元素的內(nèi)容
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;
}
// 將解析到的數(shù)據(jù)存儲到Dictionary中
struct dict {
char *name;
int age;
int gender;
int *score;
};
struct dict person = {name, age, gender, score};
// 輸出Dictionary中的數(shù)據(jù)內(nèi)容
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");
// 釋放內(nèi)存
free(score);
return 0;
}

通過以上代碼,我們成功地將JSON數(shù)據(jù)解析為Dictionary,并存儲在了結(jié)構(gòu)體中,方便我們進(jìn)行數(shù)據(jù)操作。