[应用相关] 学习笔记+STM32上cJSON的使用

[复制链接]
 楼主| 我会弄一点 发表于 2019-12-23 23:07 | 显示全部楼层 |阅读模式
本帖最后由 我会弄一点 于 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通过这个结构体来表示数据
结构体.jpg
*next 和*prev 指针可以用来遍历“矩阵”或者“对象”类型的 JSON 数据链表;这两种类型的 JSON 数据还会有一个子数据
指针*child
type : 表示该 json 数据的类型, 比如数字,字符串、矩阵、对象等
*valuestring, valueint, valuedouble 和*string 指针分别指向该 json 数据类型具体的值, 视其类型而定
使用cJSON生成JSON数据
使用.jpg
这里一定要注意cJSON_Print会申请内存,cjson_print_buf一定要free掉,不然会造成内存泄漏。
使用cJSON解析JSON数据
解析.jpg
总结:
cJSON库的代码量不大,主要是一定要记得释放内存。
mmuuss586 发表于 2019-12-24 09:18 | 显示全部楼层
感谢分享
zjq985062714 发表于 2019-12-28 19:01 | 显示全部楼层
谢谢分享。。。正好用到!
hao2014 发表于 2020-1-2 13:26 | 显示全部楼层
你这用的MQTT协议吗
 楼主| 我会弄一点 发表于 2020-1-2 13:41 | 显示全部楼层
hao2014 发表于 2020-1-2 13:26
你这用的MQTT协议吗

在应用层上用
paotangsan 发表于 2020-1-17 14:10 | 显示全部楼层
非常感谢楼主分享
renzheshengui 发表于 2020-1-17 14:19 | 显示全部楼层
非常感谢楼主分享
wakayi 发表于 2020-1-17 14:30 | 显示全部楼层
非常感谢楼主分享
wowu 发表于 2020-1-17 14:37 | 显示全部楼层
非常感谢楼主分享
xiaoqizi 发表于 2020-1-17 14:45 | 显示全部楼层
非常感谢楼主分享
木木guainv 发表于 2020-1-17 15:05 | 显示全部楼层
非常感谢楼主分享
guanjiaer 发表于 2020-1-17 15:21 | 显示全部楼层
非常感谢分享
jy6715 发表于 2022-2-21 15:56 | 显示全部楼层
请问楼主,我在使用cJSON时 jsonString = cJSON_Print(root);jsonString 接收到的时一个空指针。没有内容。是咋回事?敬请指教!谢谢
单片机是STM32103ZE  KEIL5下编译的
pklong 发表于 2022-2-22 16:51 | 显示全部楼层
分配内存的时候,如何释放呢
ingramward 发表于 2022-2-22 20:14 | 显示全部楼层
感觉cjson太强大了。   
linfelix 发表于 2022-2-22 22:50 | 显示全部楼层
怎么分配内存呢?      
usysm 发表于 2022-2-22 23:14 | 显示全部楼层
cJSON这个轻量库应用挺多的。  
zerorobert 发表于 2022-2-22 23:50 | 显示全部楼层
解码的效率怎么样   
olivem55arlowe 发表于 2022-2-23 15:08 | 显示全部楼层
由于c语言中,没有直接的字典,字符串数组等数据结构,所以要借助结构体定义,处理json
juliestephen 发表于 2022-2-23 15:52 | 显示全部楼层
cJSON可以应用在单片机上吗  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

438

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部