cjson是一個C語言的JSON解析器,它可以將JSON字符串解析成C語言中的JSON對象,同時也可以將JSON對象序列化成JSON字符串。cjson的源碼非常簡單,僅有一個頭文件和兩個源文件,非常易于集成到C語言程序中。下面是cjson的一些常見用法。
1. 解析JSON字符串
#include "cJSON.h" ... char jsonString[] = "{\"name\":\"Tom\",\"age\":20}"; cJSON *jsonObject = cJSON_Parse(jsonString); if (jsonObject == NULL) { // 解析失敗 } else { // 解析成功,可以訪問JSON對象的屬性 cJSON *nameObject = cJSON_GetObjectItem(jsonObject, "name"); char *name = cJSON_GetStringValue(nameObject); cJSON *ageObject = cJSON_GetObjectItem(jsonObject, "age"); int age = cJSON_GetNumberValue(ageObject); ... }
2. 序列化JSON對象
cJSON *jsonObject = cJSON_CreateObject(); cJSON_AddStringToObject(jsonObject, "name", "Tom"); cJSON_AddNumberToObject(jsonObject, "age", 20); char *jsonString = cJSON_PrintUnformatted(jsonObject); // jsonString為{"name":"Tom","age":20}
3. 遍歷JSON數(shù)組
char jsonString[] = "[1,\"two\",3]"; cJSON *jsonArray = cJSON_Parse(jsonString); if (jsonArray != NULL && cJSON_IsArray(jsonArray)) { int arraySize = cJSON_GetArraySize(jsonArray); for (int i = 0; i< arraySize; i++) { cJSON *arrayItem = cJSON_GetArrayItem(jsonArray, i); if (cJSON_IsNumber(arrayItem)) { int num = cJSON_GetNumberValue(arrayItem); ... } else if (cJSON_IsString(arrayItem)) { char *str = cJSON_GetStringValue(arrayItem); ... } } }
4. 創(chuàng)建JSON數(shù)組
cJSON *jsonArray = cJSON_CreateArray(); cJSON_AddNumberToObject(jsonArray, NULL, 1); cJSON_AddStringToObject(jsonArray, NULL, "two"); cJSON_AddNumberToObject(jsonArray, NULL, 3); char *jsonString = cJSON_PrintUnformatted(jsonArray); // jsonString為[1,"two",3]
cjson是一個高效、簡單、易用的JSON解析器,它廣泛應用于各種C語言程序中。通過cjson,開發(fā)者可以輕松地實現(xiàn)JSON的解析和序列化功能。