目录
1.cJSON库下载链接
https://github.com/DaveGamble/cJSON
2.Linux 安装
切换到下载的目录,输入
# mkdir build # cd build # cmake .. # make
3.cJSON数据结构和接口介绍
- 数据结构
typedef struct cJSON {
struct cJSON *next,*prev; // 数组 对象数据中用到
struct cJSON *child; // 数组 和对象中指向子数组对象或值
int type; // 元素的类型,如是对象还是数组
char *valuestring; // 如果是字符串
int valueint; // 如果是数值
double valuedouble; // 如果类型是cJSON_Number
char *string; // The item's name string, if this item is the child of, or is in the list of subitems of an object.
} cJSON;
- 封装json数据对象-常用接口
- 创建JSON主对象
cJSON* root=cJSON_CreateObject();
- 创建数组对象
cJSON* array=cJSON_CreateArray();
- 向json对象添加字符串类型数据
cJSON_AddStringToObject(root,"名称","字符串");
- 向json对象添加数字类型数据
cJSON_AddNumberToObject(root,"名称",数字)
- 向对象中增加对象(字符串、数组、数字)
cJSON_AddItemToObject(root,"名称",cJSON_CreateString("北海道的光")) ; cJSON_AddItemToObject(root,"名称",cJSON_CreateNumber(99)) ;
- 向array数组对象添加一个root对象
cJSON_AddItemToArray(array,root);
- 向数组中增加元素(元素类型不一定相同)
cJSON_AddItemToArray(array,cJSON_CreateString("Linux")); cJSON_AddItemToArray(array,cJSON_CreateNumber(26));
- 向普通json对象添加json对象
cJSON_AddObjectToObject(cJSON * const object, const char * const name)
- 将json对象转为字符串
char *cJSON_Print(cJSON *item)
- 释放空间
cJSON_Delete(root);
- 解析json字符串-常用接口
- 首先获取字符串形式的JSON数据,获取JSON对象
cJSON* root=cJSON_Parse(data);
- 获取指定名称的节点指针(也可以获取数组对象)
cJSON *obj = cJSON_GetObjectItem(root,"name");
- 解析数组,首先按上步获取数组指针 如 cJSON* array
//获取数组大小 int size=cJSON_GetArraySize(array); //获取数组元素 cJSON* tmp=cJSON_GetArrayItem(array,0); //下标从0开始
- 释放json空间
cJSON_Delete(root);
4.使用案例
- 解析字符串
static void test_parse(void)
{
const char *data="{\
\"name\":\"litao\", \
\"age\":\"22\", \
\"habbit\":\"com\" \
}";
cJSON *root = cJSON_Parse(data);
cJSON *obj = cJSON_GetObjectItem(root,"name");
printf("data:%s\n",obj->valuestring);
cJSON_Delete(root);
}
- 封装json字符串
static void test_add_json_Array(void)
{
cJSON *array = cJSON_CreateArray();
cJSON *name = cJSON_CreateObject();
cJSON *age = cJSON_CreateObject();
cJSON_AddStringToObject(name,"name","litao");
cJSON_AddStringToObject(age,"age","1232222");
cJSON_AddItemToArray(array,name);
cJSON_AddItemToArray(array,age);
printf("array:%s\n",cJSON_Print(array));
}
本文详细介绍了cJSON库的下载、Linux安装步骤,以及数据结构和常用接口,包括创建JSON对象、添加数据、解析JSON字符串等。通过示例展示了如何在C语言中封装和解析JSON数据,是理解cJSON库使用的实用教程。

被折叠的 条评论
为什么被折叠?



