C語言作為一門強類型語言,其解析JSON數據需要借助第三方庫。最為常用的解析JSON數據的C庫是cJSON。
cJSON是一個用于解析JSON數據的開源C庫,主要特點是輕巧、安全、簡單、高效、可移植性強。使用cJSON可以快速解析JSON數據并將其轉換為C的數據結構格式。
#include <stdio.h>
#include <cJSON.h>
int parseJson(char *jsonStr) {
cJSON *jsonObject = cJSON_Parse(jsonStr);
if (jsonObject == NULL) {
printf("Failed to parse json.\n");
return -1;
}
cJSON *multiJsonArr = cJSON_GetObjectItemCaseSensitive(jsonObject, "multiJsonArr");
if (!cJSON_IsArray(multiJsonArr)) {
printf("Invalid json format.\n");
cJSON_Delete(jsonObject);
return -1;
}
cJSON *eachJson = NULL;
cJSON_ArrayForEach(eachJson, multiJsonArr) {
cJSON *nameItem = cJSON_GetObjectItemCaseSensitive(eachJson, "name");
cJSON *ageItem = cJSON_GetObjectItemCaseSensitive(eachJson, "age");
printf("Name: %s, Age: %d.\n", nameItem->valuestring, ageItem->valueint);
}
cJSON_Delete(jsonObject);
return 0;
}
int main() {
char *jsonStr = "{\"multiJsonArr\":[{\"name\":\"Tom\",\"age\":18},{\"name\":\"Lucy\",\"age\":20}]}";
parseJson(jsonStr);
return 0;
}
以上代碼演示了如何使用cJSON庫解析一段含有多個JSON對象的JSON數據。該數據是一個包含了 "multiJsonArr" 字段,該字段的值是一個 JSON 數組,每個 JSON 數組元素都包含了 "name" 和 "age" 兩個字段,我們需要將這些字段的值進行解析并打印出來。
首先,我們需要將 JSON 數據解析為 cJSON 對象。如果解析失敗,則說明 JSON 數據格式不正確。然后,我們查找名為 "multiJsonArr" 的 JSON 數組對象,如果對象不存在或者不是 JSON 數組,則說明 JSON 數據格式不正確。接著,我們使用 cJSON_ArrayForEach 宏遍歷 JSON 數組中的每個 JSON 元素,每次遍歷解析其中的 "name" 和 "age" 兩個字段的值,并將其打印出來。
最后,我們將 cJSON 對象釋放掉,這樣就完成了一次 JSON 數據的解析。
上一篇vue app配置變量
下一篇data和json區別