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

c 解析json兩層方法

錢良釵2年前10瀏覽0評論

C語言中解析JSON數據是一項非常重要的技能。在本文中,我們將介紹兩種基本的方法用來解析兩層JSON數據。

方法1:使用 cJSON 庫

cJSON *json = cJSON_Parse(s); //s為待解析的JSON數據
if(!json){
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
}else{
cJSON *data = cJSON_GetObjectItemCaseSensitive(json, "data");
if(cJSON_IsArray(data)){
cJSON_ArrayForEach(item, data){
cJSON *id = cJSON_GetObjectItemCaseSensitive(item, "id");
cJSON *name = cJSON_GetObjectItemCaseSensitive(item, "name");
printf("id: %d, name: %s\n", id->valueint, name->valuestring);
}
}
cJSON_Delete(json);
}

在上述代碼中,我們使用 cJSON 庫來解析 JSON 數據。首先,我們將 JSON 數據字符串傳遞給 cJSON_Parse 函數,并檢查是否解析成功。接下來,我們使用 cJSON_GetObjectItemCaseSensitive 函數找到 "data" 對象的值,并使用 cJSON_IsArray 函數判斷其是否為一個數組類型。如果是,則使用 cJSON_ArrayForEach 函數遍歷數組中的每一個元素,然后再次使用 cJSON_GetObjectItemCaseSensitive 函數找到該元素的 "id" 和 "name" 值,并將它們輸出到控制臺上。

方法2:使用 jsmn 庫

int r;
jsmn_parser p;
jsmntok_t t[128]; // t 為解析后的 JSON 令牌
jsmn_init(&p);
r = jsmn_parse(&p, s, strlen(s), t, sizeof(t)/sizeof(t[0])); //s為待解析的JSON數據
if(r< 0){
printf("Failed to parse JSON: %d\n", r);
}else{
int i;
int size = r;
for(i=1; i

上述代碼展示了使用 jsmn 庫解析 JSON 數據的方法。首先,我們需要定義一個 jsmn_parser 對象和一個 jsmntok_t 對象數組,用來存放解析后的 JSON 令牌。接下來,我們通過調用 jsmn_parse 函數來對 JSON 數據進行解析,并檢查解析結果是否正確。如果一切順利,我們可以使用遍歷令牌的方式來獲取 JSON 數據的值,并輸出到控制臺上。在本方法中,我們通過判斷令牌的類型和值的內容來定位需要的 "data" 數組,并通過遍歷令牌來獲取數組元素中的值。