JSON是一種輕量級的數據交換格式,它有著類似于字典的形式,可以包含list和map兩種數據結構,在C語言中解析JSON數據,可以使用現有的第三方庫,例如cJSON。
使用cJSON解析JSON數據,需要先導入cJSON頭文件,然后使用cJSON_Parse函數將JSON數據轉換為cJSON結構。在cJSON結構中,list使用cJSON_Array對象,map使用cJSON_Object對象。
#include "cJSON.h" ... cJSON *root = cJSON_Parse(jsonStr); if (root == NULL) { // JSON數據解析失敗 return; } // 解析list cJSON *list = cJSON_GetObjectItem(root, "list"); if (list != NULL && cJSON_IsArray(list)) { int size = cJSON_GetArraySize(list); for (int i = 0; i< size; i++) { cJSON *item = cJSON_GetArrayItem(list, i); if (item == NULL || !cJSON_IsObject(item)) { continue; } // 解析map cJSON *name = cJSON_GetObjectItem(item, "name"); cJSON *age = cJSON_GetObjectItem(item, "age"); if (name != NULL && age != NULL && cJSON_IsString(name) && cJSON_IsNumber(age)) { printf("name: %s age: %d\n", name->valuestring, age->valueint); } } } cJSON_Delete(root);
在解析JSON數據時,需要使用cJSON提供的API函數,例如cJSON_Parse、cJSON_GetObjectItem、cJSON_GetArraySize、cJSON_GetArrayItem等函數。使用這些函數可以方便地讀取JSON數據中的具體信息。
總的來說,使用cJSON解析JSON數據非常方便,只需要導入頭文件、調用相關函數即可獲取JSON數據中的信息。同時,cJSON還支持將JSON數據轉換為字符串、添加數據到JSON數據中等功能。
上一篇db.json