本帖最后由 我会弄一点 于 2019-12-24 12:26 编辑
【学习笔记+stm32上cJSON的使用】
最近的项目需要将数据传输到物联网平台上,与平台交换数据的格式使用是JSON。 查询了中文官网的文档,知道了是一种轻量级的数据交换格式,易于开发者阅读和编写。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。
JSON格式
{ "Room"{
"LED":"on",
"Temperature":36
}
}
这串JSON数据描述的是Room的LED灯的状态和温度,相当为Room:LED=on,Temperature=36。通过""双引号标记和名称和值,值与值之间使用","来分割,名称和值之间使用":"的分开。
cJSON的开发
不同的开发语言有不同的JSON的库。cJSON的源码可以在https://sourceforge.net/projects/cjson/上下载。
cJSON添加到文件夹只需要把cJson.c和cJSON.h添加到stm32的工程中。
cJSON通过这个结构体来表示数据
*next 和*prev 指针可以用来遍历“矩阵”或者“对象”类型的 JSON 数据链表;这两种类型的 JSON 数据还会有一个子数据
指针*child
type : 表示该 json 数据的类型, 比如数字,字符串、矩阵、对象等
*valuestring, valueint, valuedouble 和*string 指针分别指向该 json 数据类型具体的值, 视其类型而定
使用cJSON生成JSON数据
这里一定要注意cJSON_Print会申请内存,cjson_print_buf一定要free掉,不然会造成内存泄漏。
使用cJSON解析JSON数据
总结:
cJSON库的代码量不大,主要是一定要记得释放内存。
|