近年來,以JSON為格式的數(shù)據(jù)交互逐漸成為主流。在C語言中,如何解析JSON格式的數(shù)據(jù),特別是數(shù)組數(shù)據(jù)呢?
#include "cJSON.h"
int main(){
char* json_string = "{\"name\": \"Tom\",\"scores\": [80, 90, 95]}";
cJSON* root = cJSON_Parse(json_string);
if (!root) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
cJSON* scores = cJSON_GetObjectItem(root, "scores");
if (cJSON_IsArray(scores)) {
int array_size = cJSON_GetArraySize(scores);
for (int i = 0; i< array_size; i++) {
cJSON* array_item = cJSON_GetArrayItem(scores, i);
if (cJSON_IsNumber(array_item)) {
printf("Score%d: %d\n", i + 1, array_item->valueint);
}
}
}
cJSON_Delete(root);
return 0;
}
以上為一個(gè)簡單的JSON數(shù)組解析示例。首先,我們使用cJSON庫中的cJSON_Parse()函數(shù)將JSON字符串解析為cJSON的根節(jié)點(diǎn),然后使用cJSON_GetObjectItem()函數(shù)獲取scores數(shù)組節(jié)點(diǎn)。
接著,我們判斷scores節(jié)點(diǎn)是否為數(shù)組,如果是,獲取數(shù)組大小,并使用循環(huán)和cJSON_GetArrayItem()函數(shù),獲取每一個(gè)數(shù)組元素,判斷元素是否為數(shù)字類型,如果是,則打印該元素的值。
最后,我們使用cJSON_Delete()函數(shù)釋放cJSON節(jié)點(diǎn)內(nèi)存。
使用以上方法,可以輕松解析JSON格式的數(shù)組數(shù)據(jù)。
上一篇vue 的作用