linux下用cjson实现对数据键值对的封装保存
首先需要下载封装好的cjson包包括 cjson.h cjson.c
为方便大家我已上传
下载地址如下
http://download.csdn.net/detail/wuheshi/8353075
编程时加入头文件cjson.h 就可以调用cjson.c里面的函数
打包json数据和解析json数据例子如下:
简单编码实例如下
#include "../../include/myhead.h"
#include "../../include/cJSON.h"
/*对json数据的解析取出其中的有用信息*/
int undo_cjson_pack(char text[],int id,int ctlcmd)
{
cJSON *json, *json_value;
// 解析数据包
json = cJSON_Parse(text);
if (!json)
{
printf("Error before: [%s]\n",cJSON_GetErrorPtr()); //判断是否是json数据
}
else
{
// 解析ID值
json_value = cJSON_GetObjectItem( json , "ID");
if( json_value->type == cJSON_Number )
{
// 从valueint中获得结果
printf("value:%d\r\n",json_value->valueint);
id = json_value->valueint ;
}
// 解析 控制量
json_value = cJSON_GetObjectItem( json , "ctl_cmd");
if( json_value->type == cJSON_Number )
{
// valuestring中获得结果
printf("cmd:%d\r\n",json_value->valueint);
ctlcmd =json_value->valueint;
// printf("%s\n",cmd);
}
// 释放内存空间
cJSON_Delete(json);
}
return 0;
}
/*打包数据键值对成json格式再传给字符串*/
char * do_cjson_pack(int idnum,char *str)
{
// 创建JSON Object
cJSON *root = cJSON_CreateObject();
// 加入节点(键值对),节点名称为ID,节点值为123.4
cJSON_AddNumberToObject(root,"ID",idnum);
cJSON_AddStringToObject(root,"ctl_cmd",str);
// 打印JSON数据包
char *out = cJSON_Print(root);
printf("%s\n",out);
// 释放内存
cJSON_Delete(root);
return out;
}
/*
int main()
{
char text[] = "{\"ctl_cmd\":\6,\"ID\":1}";
char *putout = NULL;
int cmd_str = 1;
int num = 9;
putout = do_cjson_pack(num,cmd_str) ;
undo_cjson_pack(text);
printf("%s\n",putout);
free(putout);
return 0;
}
*/
程序有点小改动,运行时有错误的话 可能数据格式有点问题,这里解释作用
更多推荐
所有评论(0)