引入cJSON.h和cJSON.c
一、读取
从文件读取cJSON_Parse
FILE* fp_old_gb = fopen(OLD_GB_PATH,"r");
if(fp_old_gb != NULL){
char buf_status[1024] = {0};
fread(buf_status,1,sizeof(buf_status),fp_old_gb);
fclose(fp_old_gb);
cJSON* root = cJSON_Parse(buf_status);
}
获取节点
cJSON* node = cJSON_GetObjectItem(root,"gb28181");
获取节点值
char value = node->valuestring;
int value = node->valueint;
double value = node->valuedouble;
从数据中获取节点
int size = cJSON_GetArraySize(node_algoArr);
LOG_DEBUG("node_algoArr:%d", size);
for(int i = 0;i<size;i++){
cJSON* algo = cJSON_GetArrayItem(node_algoArr,i);
cJSON* node_algo_name = cJSON_GetObjectItem(algo,"name");
}
二、写入
创建节点
cJSON* root = cJSON_CreateObject();
添加到节点
cJSON_AddNumberToObject(root , "code", 404);
cJSON_AddStringToObject(root, "mid", "4");
cJSON* data = cJSON_CreateObject();
cJSON_AddItemToObject(root, "data",data);
cJSON_AddItemToObject(itemNew,"phone",cJSON_CreateBool(true));
cJSON_AddItemToObject(itemNew,"Confidence",cJSON_CreateNumber(confidence));
cJSON_AddItemToObject(itemNew,"Confidence",cJSON_CreateString(confidence));
创建数组节点
cJSON* array= cJSON_CreateArray();
添加到数组
cJSON* item = cJSON_CreateObject();
cJSON_AddItemToArray(array,item );
替换原有数据
cJSON_ReplaceItemInObject(node, "platSipID", cJSON_CreateString(node_server_id->valuestring));
三、转换字符串并保存
保存文件
char* data = cJSON_Print(root);
FILE* fp = fopen(CONFIG_GB28181.data(),"w");
fwrite(data,sizeof(char),strlen(data)+1,fp);
fclose(fp);
sync();
// 一定记得删除
cJSON_Delete(root);
间接赋值
char *str = cJSON_Print(root);
char *temp = (char *)malloc(strlen(str)+1);
strcpy(temp,str); //间接赋值
*(event->body) = temp;
cJSON_Delete(root);
分页用法
cJSON* root = cJSON_CreateObject();
cJSON* dataNode = cJSON_CreateObject();
cJSON* rowsNode = cJSON_CreateArray();
cJSON_AddNumberToObject(root, "code", 0);
cJSON_AddItemToObject(root, "data", dataNode);
cJSON_AddItemToObject(dataNode, "rows", rowsNode);
cJSON_AddNumberToObject(dataNode, "totalCount", count);