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

c 多層嵌套json解析

林玟書1年前10瀏覽0評論

Json作為一種常用的數(shù)據(jù)傳輸格式,在大數(shù)據(jù)和互聯(lián)網(wǎng)應(yīng)用中得到了廣泛應(yīng)用和支持,對于C語言來說,可以利用第三方解析庫來實(shí)現(xiàn)解析Json數(shù)據(jù),其中多層嵌套Json的解析是很常見的一種情況,這里介紹一下如何使用 cJSON 解析多層嵌套的 Json 數(shù)據(jù)。

cJSON 是一個輕型的、可擴(kuò)展的C語言Json解析器,它可以很方便的將 Json 格式的數(shù)據(jù)轉(zhuǎn)化為 C語言中的數(shù)組和結(jié)構(gòu)體,方便C語言進(jìn)行數(shù)據(jù)處理和通信。下面是 cJSON 嵌套 Json 的解析示例代碼:

#include#include#include "cJSON.h"
int main()
{
char *json_str = "{\"name\":\"xiaoming\",\"age\":18,\"scores\":[{\"course\":\"math\",\"score\":87},{\"course\":\"english\",\"score\":92}],\"address\":{\"province\":\"beijing\",\"city\":\"haidian\",\"street\":\"xueyuanlu\"}}";
cJSON *json = cJSON_Parse(json_str);
if (json == NULL)
{
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
cJSON *name = cJSON_GetObjectItem(json, "name");
cJSON *age = cJSON_GetObjectItem(json, "age");
cJSON *scores = cJSON_GetObjectItem(json, "scores");
cJSON *address = cJSON_GetObjectItem(json, "address");
printf("Name : %s\n", name->valuestring);
printf("Age : %d\n", age->valueint);
int scores_size = cJSON_GetArraySize(scores);
for (int i = 0; i< scores_size; i++)
{
cJSON *score = cJSON_GetArrayItem(scores, i);
cJSON *course = cJSON_GetObjectItem(score, "course");
cJSON *score_value = cJSON_GetObjectItem(score, "score");
printf("Course : %s, Score : %d\n", course->valuestring, score_value->valueint);
}
cJSON *province = cJSON_GetObjectItem(address, "province");
cJSON *city = cJSON_GetObjectItem(address, "city");
cJSON *street = cJSON_GetObjectItem(address, "street");
printf("Address : %s %s %s\n", province->valuestring, city->valuestring, street->valuestring);
cJSON_Delete(json);
return 0;
}

在這個示例中,我們定義了一段多層嵌套的 Json 字符串,然后使用 cJSON_Parse 函數(shù)解析 Json 數(shù)據(jù),并依據(jù) Json 數(shù)據(jù)中的鍵值來獲取對應(yīng)的值。代碼中使用了 cJSON_GetObjectItem 和 cJSON_GetArrayItem 兩個函數(shù)來解析嵌套數(shù)據(jù),這兩個函數(shù)的參數(shù)分別為一個 cJSON 對象和一個字符串類型的鍵值,返回對應(yīng)的 cJSON 對象或數(shù)組項。

總之,利用 cJSON 解析 Json 數(shù)據(jù)是一個簡單又實(shí)用的方法,對于C語言開發(fā)有很大的幫助,這里只是簡單的介紹了嵌套數(shù)據(jù)的解析方法,具體應(yīng)用還需要結(jié)合實(shí)際情況進(jìn)行處理。