STM32用Jansson库提取解析json

1.在Keil5中安装json设备包

去Keil的官方下载设备包:Keil5官方设备包
安装完添加到工程中,加入**#include **头文件可以使用,如下图所示:
STM32用Jansson库提取解析json_第1张图片

2.如何使用?

关于如何使用可以参考官方的文档,可以通过单击它,进行阅读。
STM32用Jansson库提取解析json_第2张图片
当然,用这个库主要是对数据进行打包和解析,怎样快速使用这个库呢?

3 如何用来解析

假如有一串字符串需要解析,例如:text[] = {“A”,“Zhangjie”,“B”,“Zhangsan”,“C”,“Lihua”};
这明显是个json的字符串,在Python中只需要 import json,当然在C语音中使用它也像Python使用它一样简单。

json_t = *root                         这个是Json的数据类型,所有的操作都是在操作它
json_error_t error;                    这个error是输出错误的调试信息,具体的请阅读文档
root = json_loads(text,0,&error);      没错就是把字符串加载进去,看看是不是符合json格式
                                       如果失败会返回0
if(!root) 失败
{
	printf("error: on line %d: %s\n", error.line, error.text );
	输出错误的信息,会告诉你在第几行,哪个单词出错了
} 
else  成功
{
	json_t str;                             定义变量
	str = json_object_get(root,"A");        把A中的数据取出来
	printf("%s",json_string_value(str));    一定要注意要把json数据变成字符串
	json_decref( root );                    一定要释放空间
}
通过以上简单的操作,就把A中的数据取了出来。
另外 当你发现json_loads(...)并不能满足你的需求时,可以试试
json_loadb(...); 具体可以看文档,这个函数可以实现想让多少个数据放进去就放进去
因为我只用了操作字符串,还有很多的操作

4.如何打包数据

下面例子是从文档中摘取的 因为我用它的主要目的是解析字符串,关于数组的我没仔细看
json_t *root                          这个是Json的数据类型,所有的操作都是在操作它
/* 建立一个空的json数据 */
root = json_pack("{}");
/* 建立的Json数据为: {"foo": 42, "bar": 7} */
root = json_pack("{sisi}", "foo", 42, "bar", 7);
/* Like above, ':', ',' and whitespace are ignored */
root = json_pack("{s:i, s:i}", "foo", 42, "bar", 7);

{sisi} 中 s将null结尾的UTF-8字符串转换为JSON字符串   
         i代表转换int为JSON整数
 文档中有好多参数,更详细请阅读文档

未完,待续。。

你可能感兴趣的:(stm32,Keil5)