CSJON库基本数据格式 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();
向对象中增加(字符)节点
cJSON_AddStringToObject(root,"名称","字符串");
向对象中增加对象(字符串、数组、数字)
cJSON_AddItemToObject(root,"名称",cJSON_CreateString("邝东宇")) ;
cJSON_AddItemToObject(root,"名称",cJSON_CreateNumber(100)) ;
向数组中增加元素(元素类型不一定相同)
cJSON_AddItemToArray(array,cJSON_CreateString("Linux"));
cJSON_AddItemToArray(array,cJSON_CreateNumber(26));
解析JSON:
首先获取字符串形式的JSON数据,例:存储于char data[1024];
获取JSON对象
cJSON* root=cJSON_Parse(data);
获取指定名称的节点指针,
cJSON* tmp=cJSON_GetObjectItem(root,"name");
解析数组,首先按上步获取数组指针 如 cJSON* array
获取数组大小 int size=cJSON_GetArraySize(array);获取数组元素 cJSON* tmp=cJSON_GetArrayItem(array,1); //下标从0开始
最后释放对象
cJSON_Delete(root);
根据对象指针获取JSON字符串形式数据
char *data=cJSON_Print(root);
附件cJSON库以及demo源码在本人CSDN资源中获取。 点击下载