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ù)操作。
上一篇vue3 mixins
下一篇db2正則解析json