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

c 如何遍歷json字符串

傅智翔1年前9瀏覽0評論

隨著互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)的快速發(fā)展,前后端分離的開發(fā)模式愈發(fā)成熟,同時也推動了前端技術的快速發(fā)展,JSON作為一種輕量級的數(shù)據(jù)交互格式,很受前端開發(fā)人員的喜愛。在使用C語言操作JSON數(shù)據(jù)時,經(jīng)常需要遍歷JSON字符串,接下來,我們就來一起看看如何遍歷JSON字符串。

1 #include2 #include3 #include "cjson/cJSON.h"
 4
 5 void parse_json(cJSON *json)
 6 {
 7     if(json->type == cJSON_Object)   // 如果json對象
 8     {
 9         cJSON *child = NULL;
10         cJSON_ArrayForEach(child, json)
11         {
12             printf("%s\n",child->string);  // 輸出鍵
13             parse_json(child->child);      // 遞歸遍歷值
14         }
15     }
16     if(json->type == cJSON_Array)    // 如果json數(shù)組
17     {
18         cJSON *child = NULL;
19         cJSON_ArrayForEach(child, json)
20         {
21             parse_json(child);        // 遞歸遍歷數(shù)組中的元素
22         }
23     }
24     if(json->type == cJSON_String)   // 如果json字符串
25     {
26         printf("%s\n",json->valuestring); // 輸出字符串
27     }
28     if(json->type == cJSON_Number)   // 如果json數(shù)字
29     {
30         printf("%d\n",json->valueint);  // 輸出整形數(shù)
31     }
32 }
33
34 int main()
35 {
36     char *json_string = "{\"name\":\"Lily\",\"age\":22,\"hobby\":[\"swimming\",\"reading\"]}";
37     cJSON *json = cJSON_Parse(json_string);  // 解析JSON字符串
38     if(json == NULL) return 1;
39     parse_json(json);  // 遍歷JSON數(shù)據(jù)
40     cJSON_Delete(json);  // 釋放內存
41     return 0;
42 }

如上代碼演示了如何用C語言操作JSON數(shù)據(jù),我們通過cJSON庫解析JSON字符串,在解析后,我們需要自己編寫遍歷JSON數(shù)據(jù)的函數(shù)。parse_json函數(shù)中首先判斷JSON數(shù)據(jù)的類型,如果是JSON對象,遍歷JSON對象,遞歸遍歷對象中的值;同樣,如果是JSON數(shù)組,遍歷數(shù)組中的元素,在遍歷數(shù)組時同樣需要遞歸遍歷元素,而如果是JSON字符串或數(shù)字,直接輸出即可。