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

c 遞歸json

C 語言是一種廣泛使用的編程語言,它能夠進(jìn)行高效、底層的操作。JSON 是一種輕量級(jí)的數(shù)據(jù)交換格式,它已經(jīng)成為了現(xiàn)代應(yīng)用程序中最流行的數(shù)據(jù)格式之一。本文將介紹如何使用 C 語言遞歸解析 JSON。

C 語言沒有自帶的 JSON 庫,但是可以使用第三方庫來解析 JSON,例如 cJSON。基于 cJSON 的 JSON 解析器遞歸解析 JSON 數(shù)據(jù)非常方便,例如下面的代碼:

#include <stdio.h>
#include <cJSON.h>
void printValue(cJSON *value);
void printArray(cJSON *array) {
int size = cJSON_GetArraySize(array);
printf("[");
for (int i = 0; i < size; i++) {
cJSON *value = cJSON_GetArrayItem(array, i);
printValue(value);
if (i < size - 1) {
printf(", ");
}
}
printf("]");
}
void printObject(cJSON *object) {
int size = cJSON_GetArraySize(object);
printf("{");
for (int i = 0; i < size; i++) {
cJSON *value = cJSON_GetArrayItem(object, i);
printf("\"%s\": ", value->string);
printValue(value);
if (i < size - 1) {
printf(", ");
}
}
printf("}");
}
void printValue(cJSON *value) {
switch (value->type) {
case cJSON_Number:
printf("%g", value->valuedouble);
break;
case cJSON_String:
printf("\"%s\"", value->valuestring);
break;
case cJSON_Array:
printArray(value);
break;
case cJSON_Object:
printObject(value);
break;
case cJSON_True:
printf("true");
break;
case cJSON_False:
printf("false");
break;
case cJSON_NULL:
printf("null");
break;
}
}
int main()
{
char* json = "{\"name\":\"小明\",\"age\":18,\"hobbies\":[\"running\",\"swimming\"],\"address\":{\"province\":\"廣東\",\"city\":\"深圳\",\"district\":\"南山\"}}";
cJSON* root = cJSON_Parse(json);
printObject(root);
cJSON_Delete(root);
return 0;
}

這段代碼定義了一個(gè) printValue 函數(shù),它根據(jù) value 的類型遞歸地打印 JSON 數(shù)據(jù)。當(dāng) value 是數(shù)組時(shí),調(diào)用 printArray 函數(shù)遞歸打印。當(dāng) value 是對(duì)象時(shí),調(diào)用 printObject 函數(shù)遞歸打印。

接下來,我們解釋一下上面的代碼如何工作。主程序首先定義了一個(gè) JSON 字符串,然后使用 cJSON_Parse 函數(shù)將其轉(zhuǎn)換為 cJSON 結(jié)構(gòu)體。接著,調(diào)用 printObject 函數(shù)打印 cJSON 結(jié)構(gòu)體。printObject 函數(shù)根據(jù) cJSON 結(jié)構(gòu)體的類型遞歸地打印它的成員。最后,調(diào)用 cJSON_Delete 函數(shù)釋放 cJSON 結(jié)構(gòu)體占用的內(nèi)存。

本文介紹了如何使用 cJSON 庫遞歸解析 JSON 數(shù)據(jù),這是一個(gè)非常方便的工具。C 語言作為一種底層的語言,通過遞歸解析 JSON 數(shù)據(jù),可以更好地理解數(shù)據(jù)的結(jié)構(gòu)和組織方式,也能更容易地實(shí)現(xiàn)對(duì) JSON 數(shù)據(jù)的使用。