Linux_cjson的介绍与使用
一、cjson的介绍
JSON(JavaScript Object Notation)是一种轻量级的文本数据交换格式,易于让人阅读。同时也易于机器解析和生成。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。(这里介绍下GitHub上DaveGamble的cJSON库的使用)
二、cjson的下载
1、cJSON库下载址:
https://github.com/DaveGamble/cJSON

2、可以直接通过命令行下载到虚拟机下,也可以先下载到windows再通过rz传进来。
3、按照下面压缩格式解压压缩包 (XXX代表文件名)
.tar -> tar -xvf XXX.tar
.zip -> unzip XXX.zip
.tar.gz -> -zxvf XXX.tar.gz
.tar.bz2 -> -jxvf XXX.tar.bz2
(解压后,文件夹下的内容)

三、cjson动态库安装与使用
1、make all

2、sudo make install
四、json函数的封装
1、JSON结构体
熟悉使用cJSON库函数可从cJSON结构体入手,cJSON结构体如下所示:
typedef struct cJSON {
struct cJSON *next,*prev; //双向
struct cJSON *child; //下一层
int type; //数据项类型(键的类型)
char *valuestring; //存储文本型数据
int valueint; //存储整型
double valuedouble; //存储浮点型
char *string; //键名
} cJSON;
2、json函数的封装
//json格式的封装函数例子
int pack_json(char *buf,int size,char *sn,char *time,float temp)
{
cJSON *root = NULL;
if(!buf || !sn ||!temp ||!time)
{
printf("Invalid input argumentsn");
return -1;
}
/*创建头节点,并将头指针指向头节点*/
root = cJSON_CreateObject();
/*向链表里添加节点*/
//字符串型
cJSON_AddStringToObject(root,"sn",chip);
//字符串型
cJSON_AddStringToObject(root,"time",time);
//浮点型
cJSON_AddNumberToObject(root,"temperature",temp);
strncpy(buf,cJSON_Print(root),size);
cJSON_Delete(root);
return 0;
}
//json格式的解析函数
int parser_json(char *buf,int snsize,int timesize,char *sn,char *time,float *temp)
{
cJSON *root;
cJSON *itme;
if(!buf || !sn ||!temp ||!time)
{
printf("Invalid input arguments");
return -1;
}
/*解析整段json数据*/
root = cJSON_Parse(buf);
/* 依次根据名称提取JSON数据(键值对) */
itme = cJSON_GetObjectItem(root,"sn");
strncpy(sn,itme->valuestring,snsize);
itme = cJSON_GetObjectItem(root,"time");
strncpy(time,itme->valuestring,timesize);
itme = cJSON_GetObjectItem(root,"temperature");
*temp = itme->valuedouble;
cJSON_Delete(root);
return 0;
}
五、cJSON使用过程中的内存问题
cJSON的所有操作都是基于链表的,所以cJSON在使用过程中大量的使用malloc从堆中分配动态内存的,所以在使用完之后,应当及时调用下面的函数,清空cJSON指针所指向的内存,该函数也可用于删除某一条数据:
(void) cJSON_Delete(cJSON *item);
关于更详细的介绍,大家可参考下方链接:
https://mculover666.blog.csdn.net/article/details/103796256
最后
以上就是傲娇大船最近收集整理的关于Linux_cjson库的简单使用的全部内容,更多相关Linux_cjson库内容请搜索靠谱客的其他文章。
发表评论 取消回复