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

c json 多嵌套

李中冰2年前9瀏覽0評論

c JSON是一個能夠解析JSON數據格式的C語言庫,使用它可以實現JSON數據格式的解析及生成。c JSON多嵌套是指JSON數據格式中含有多層嵌套結構,其實在實際的開發中大部分的JSON接口都存在嵌套結構,是非常常見的情況。

c JSON提供了parse函數,可以將JSON格式的字符串解析為JSON對象,而JSON對象又可以是一個數組或者嵌套的對象。對于嵌套的情況,可以通過遞歸來解決。

/**
* 遞歸遍歷
*/
static void process_json(cJSON *root)
{
if(!root) return;
switch (root->type)
{
case cJSON_NULL:
printf("NULL\n");
break;
case cJSON_False:
printf("false\n");
break;
case cJSON_True:
printf("true\n");
break;
case cJSON_Number:
printf("number: %g\n", root->valuedouble);
break;
case cJSON_String:
printf("string: %s\n", root->valuestring);
break;
case cJSON_Array:
printf("array:\n");
int size = cJSON_GetArraySize(root);
for (int i=0; ichild;
while (item)
{
printf("%s:\n", item->string);
process_json(item);
item = item->next;
}
break;
default:
printf("Unknown type:%d\n", root->type);
break;
}
}
int main()
{
const char *json_str = "
{
\"name\": \"Peter\",
\"age\": 20,
\"pets\": [
{
\"name\": \"Tom\",
\"age\": 3
},
{
\"name\": \"Jerry\",
\"age\": 2
}
]
}";
// 解析字符串為JSON對象
cJSON *root = cJSON_Parse(json_str);
// 處理JSON對象
process_json(root);
// 釋放內存
cJSON_Delete(root);
return 0;
}

上面的代碼中,遞歸遍歷實現了對多嵌套JSON數據的解析。在array和object類型中,需要通過cJSON_GetArrayItem和root->child/root->next來獲取其中的元素,進而進行遞歸解析。