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

c 遍歷json數據

吉茹定1年前7瀏覽0評論

Json是一種輕量級的數據交換格式,僅由鍵值對組成,通過不同的數據類型可以表示復雜的數據結構。在C語言中,遍歷和解析Json數據是一個常見的需求。下面介紹一種基于cJSON庫的遍歷方法。

cJSON是一個開源的Json解析庫,具有輕量、快速和簡單易用的特點,在C語言中廣泛應用。

下面我們以以下Json數據為例:

{
"name": "張三",
"age": 20,
"gender": "male",
"hobbies": [
"reading",
"swimming",
"hiking"
],
"education": {
"bachelor": "Peking University",
"master": "Tsinghua University"
}
}

我們可以通過以下代碼遍歷Json數據:

#include <stdio.h>
#include <cJSON.h>
int main() {
char *json = "{...}";   //上述Json數據
cJSON *root = cJSON_Parse(json);    //解析Json數據
cJSON *name = cJSON_GetObjectItem(root, "name");    //"name"屬性對應的Json對象
printf("name: %s\n", name->valuestring);
cJSON *age = cJSON_GetObjectItem(root, "age");  //"age"屬性對應的Json對象
printf("age: %d\n", age->valueint);
cJSON *gender = cJSON_GetObjectItem(root, "gender");  //"gender"屬性對應的Json對象
printf("gender: %s\n", gender->valuestring);
cJSON *hobbies = cJSON_GetObjectItem(root, "hobbies");    //"hobbies"屬性對應的Json對象
int i;
for (i = 0; i < cJSON_GetArraySize(hobbies); i++) {
cJSON *hobby = cJSON_GetArrayItem(hobbies, i);    //hobbies數組中的Json對象
printf("hobby[%d]: %s\n", i, hobby->valuestring);
}
cJSON *education = cJSON_GetObjectItem(root, "education");    //"education"屬性對應的Json對象
cJSON *bachelor = cJSON_GetObjectItem(education, "bachelor");    //"bachelor"屬性對應的Json對象
printf("bachelor: %s\n", bachelor->valuestring);
cJSON *master = cJSON_GetObjectItem(education, "master");    //"master"屬性對應的Json對象
printf("master: %s\n", master->valuestring);
cJSON_Delete(root); //釋放Json對象
return 0;
}

在上述代碼中,我們首先通過cJSON_Parse()函數將Json字符串解析成一個Json根對象。接著,利用cJSON_GetObjectItem()和cJSON_GetArrayItem()函數訪問Json數據中的不同屬性和數組元素,并輸出其值。

最后,我們需要通過cJSON_Delete()函數釋放Json對象,以避免內存泄漏。