文章目錄
1 簡介
工作中經常使用JSON字符串進行數據傳輸,所以需要構造或者解析json數據,這裏主要對開源的cJSON做個簡單介紹,防止遺忘。
2下載及編譯
2.1 cJSON庫的下載地址:
https://github.com/DaveGamble/cJSON
2.2 編譯
我們可以直接將cJSON編譯爲庫或者將文件”cJSON.h” “cJSON.c”包含到自己的工程中即可。
在https://github.com/DaveGamble/cJSON 的README中,有詳細介紹cJSON的用法,並且在下載的源碼中有測試例程test.c,可以進行參考。
3 重要函數簡介
3.1 cJSON_Parse
函數原型:
CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
函數參數:
value:json字符串
函數返回:
返回json對象,弱失敗,則返回NULL
說明:
此函數主要對傳進去的數據進行解析,並返回json對象
3.2 cJSON_Delete
函數原型:
CJSON_PUBLIC(void) cJSON_Delete(cJSON *c);
函數參數:
c: json對象
函數返回:
無
說明:
當使用完json相關的指針後,就調用此函數,釋放內存
3.3 cJSON_Print
函數原型:
CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);
函數參數:
item:json對象
函數返回:
指向json字符串的地址指針
說明:
將json結構輸出爲字符串的形式
3.4 cJSON_GetObjectItem
函數原型:
CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string);
函數參數:
object:json對象指針
string:要獲取的字符串
函數返回:
成功:返回指向json結構體指針
失敗:NULL
說明:
獲取json字符串字段值
3.5 cJSON_CreateObject
函數原型:
CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
函數參數:
無
函數返回:
無
說明:
創建一個json對象
3.6 cJSON_CreateNumber
函數原型:
CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);
函數參數:
number:值
函數返回:
被創建的值的json對象
說明:
當我們想向某個json對象增加值的時候,需要先調用這個函數創建這個值的對象
3.7 cJSON_CreateString
函數原型:
CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);
函數參數:
string:字符串值
函數返回:
被創建的值的json對象
說明:
當我們想向某個json對象增加字符串值的時候,需要先調用這個函數創建這個值的對象
3.8 cJSON_CreateArray
函數原型:
CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);
函數參數:
無
函數返回:
創建數組的json指針對象
說明:
當向某個json對象中增加數組的時候,調用此函數創建數組指針
3.9 cJSON_AddItemToObject
函數原型:
CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
函數參數:
object: json對象
string: 要加入的元素的名字
item: 要加入元素的json指針
函數返回:
無
說明:
向object中加入一個元素
3.10 cJSON_AddItemToArray
函數原型:
CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item);
函數參數:
array: json數組對象指針
item:要加入數組對象的對象指針
函數返回:
無
說明:
向數組對象中加入一個新的元素