cJSON的所有用法

引入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);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值