c-json是一個輕量級的C語言JSON解析器,非常適合在嵌入式系統(tǒng)中使用。它能夠處理JSON數(shù)據(jù)的解析和生成,而且非常容易使用。
首先,我們需要在代碼中包含c-json的頭文件:
#include "cJSON.h"
然后,我們可以使用cJSON_Parse函數(shù)來解析JSON字符串:
const char* json_str = "{\"name\":\"John\",\"age\":30,\"car\":null}"; cJSON* root = cJSON_Parse(json_str); if (root == NULL) { // 解析失敗 return; } // 使用 cJSON_GetObjectItem 函數(shù)獲取鍵名對應(yīng)的值 cJSON* name = cJSON_GetObjectItem(root, "name"); if (name != NULL) { printf("name: %s\n", name->valuestring); }
在上述代碼中,我們首先聲明一個JSON字符串,然后調(diào)用cJSON_Parse函數(shù)解析JSON字符串,并將返回的cJSON指針存儲在root變量中。接下來,我們使用cJSON_GetObjectItem函數(shù)獲取鍵名為“name”的值,并輸出到控制臺中。如果解析失敗,cJSON_Parse函數(shù)將返回NULL。
除了解析JSON字符串外,c-json還可以幫助我們生成JSON數(shù)據(jù),并將其轉(zhuǎn)換為字符串。我們可以使用cJSON_CreateObject函數(shù)創(chuàng)建一個JSON對象,并使用cJSON_AddStringToObject函數(shù)向其中添加鍵值對:
cJSON* root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "John"); cJSON_AddNumberToObject(root, "age", 30); cJSON_AddFalseToObject(root, "isMarried"); char* json_str = cJSON_Print(root); printf("JSON: %s\n", json_str); cJSON_Delete(root); free(json_str);
該代碼段將生成以下JSON字符串:
{"name":"John","age":30,"isMarried":false}
在這段代碼中,我們首先使用cJSON_CreateObject函數(shù)創(chuàng)建一個JSON對象,然后使用cJSON_AddStringToObject、cJSON_AddNumberToObject和cJSON_AddFalseToObject函數(shù)向其中添加鍵值對,最后使用cJSON_Print函數(shù)將其轉(zhuǎn)換為JSON字符串并輸出到控制臺。需要注意的是,由于使用了cJSON_Print函數(shù),我們需要調(diào)用cJSON_Delete和free函數(shù)來釋放內(nèi)存。
總的來說,c-json是一個非常方便的JSON解析器,并且非常適合在嵌入式系統(tǒng)中使用。通過使用cJSON_Parse、cJSON_GetObjectItem、cJSON_CreateObject等函數(shù),我們可以輕松地解析和生成JSON數(shù)據(jù)。