以上代碼中,我們首先使用createJSON函數(shù)創(chuàng)建了一個JSON對象,然后使用cJSON_AddStringToObject和cJSON_AddNumberToObject函數(shù)向JSON對象中添加成員。接著使用cJSON_Print函數(shù)將JSON對象轉(zhuǎn)換成字符串,并輸出。最后使用cJSON_Delete函數(shù)和free函數(shù)釋放內(nèi)存。
與此相反,當(dāng)我們接收到JSON格式數(shù)據(jù)時,我們也可以使用cJSON將其解析成C語言的結(jié)構(gòu)體。以下為示例代碼:
#include "cJSON.h"
typedef struct {
char* name;
int age;
} Person;
int main() {
char* json_str = "{\"name\":\"李四\",\"age\":25}"; // 假設(shè)獲取到的JSON字符串
cJSON* root = cJSON_Parse(json_str); // 將JSON字符串解析為JSON對象
Person person;
cJSON* name = cJSON_GetObjectItem(root, "name");
person.name = name->valuestring; // 從JSON對象中獲取字符串類型成員
cJSON* age = cJSON_GetObjectItem(root, "age");
person.age = age->valueint; // 從JSON對象中獲取數(shù)字類型成員
printf("解析后的姓名為:%s\n", person.name);
printf("解析后的年齡為:%d\n", person.age);
cJSON_Delete(root); // 釋放JSON對象
return 0;
}
在以上代碼中,我們首先假設(shè)獲取到了一個JSON格式的字符串,然后使用cJSON_Parse函數(shù)將其解析為JSON對象。接著我們定義了一個名為Person的結(jié)構(gòu)體,并使用cJSON_GetObjectItem函數(shù)從JSON對象中獲取成員值,賦值給結(jié)構(gòu)體對應(yīng)的成員。最后我們輸出解析后的結(jié)果,然后釋放JSON對象。
總的來說,使用cJSON可以讓我們方便地在C語言中進行JSON格式數(shù)據(jù)的轉(zhuǎn)換和解析,具有一定的實用性和優(yōu)勢。