最近在做一個項目中需要解析JSON數(shù)據(jù),查了一些資料,學習了一下C語言下的JSON解析庫,下面將介紹如何使用cJSON解析單個JSON對象。
#include <stdio.h>
#include <stdlib.h>
#include <cJSON.h>
int main()
{
char *json_str = "{\"name\":\"張三\",\"age\":20,\"score\":80.5}";
cJSON *json = cJSON_Parse(json_str);
if (!json) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
} else {
cJSON *name = cJSON_GetObjectItem(json, "name");
cJSON *age = cJSON_GetObjectItem(json, "age");
cJSON *score = cJSON_GetObjectItem(json, "score");
printf("name: %s\n", name->valuestring);
printf("age: %d\n", age->valueint);
printf("score: %f\n", score->valuedouble);
cJSON_Delete(json);
}
return 0;
}
上面是一段簡單的代碼,首先我們需要將需要解析的JSON字符串傳入cJSON_Parse函數(shù),得到一個cJSON對象,然后通過cJSON_GetObjectItem函數(shù)獲取對象中的值,在此例中我們分別獲取了“name”、“age”、“score”三個對象,并輸出它們的值。
cJSON支持解析復雜的JSON結(jié)構,大多數(shù)函數(shù)的返回值都是一個cJSON對象,我們可以通過cJSON_Type函數(shù)獲取這個對象的類型,然后進行類型轉(zhuǎn)換,獲取對應的值,還可以使用cJSON_GetArraySize獲取數(shù)組的大小,使用cJSON_GetArrayItem獲取每個數(shù)組成員的值。
總之,cJSON是一個比較方便和易用的JSON解析庫,而且cJSON非常輕量級,易于集成到各種C語言項目中。它支持標準的JSON格式和一些非標準格式,是C語言下解析JSON數(shù)據(jù)的不二之選。
上一篇python 語句前的