打印
[应用相关]

学习笔记+STM32上cJSON的使用

[复制链接]
4031|96
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 我会弄一点 于 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库的代码量不大,主要是一定要记得释放内存。

使用特权

评论回复
沙发
mmuuss586| | 2019-12-24 09:18 | 只看该作者
感谢分享

使用特权

评论回复
板凳
zjq985062714| | 2019-12-28 19:01 | 只看该作者
谢谢分享。。。正好用到!

使用特权

评论回复
地板
hao2014| | 2020-1-2 13:26 | 只看该作者
你这用的MQTT协议吗

使用特权

评论回复
5
我会弄一点|  楼主 | 2020-1-2 13:41 | 只看该作者
hao2014 发表于 2020-1-2 13:26
你这用的MQTT协议吗

在应用层上用

使用特权

评论回复
6
paotangsan| | 2020-1-17 14:10 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
renzheshengui| | 2020-1-17 14:19 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
8
wakayi| | 2020-1-17 14:30 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
9
wowu| | 2020-1-17 14:37 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
10
xiaoqizi| | 2020-1-17 14:45 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
11
木木guainv| | 2020-1-17 15:05 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
12
guanjiaer| | 2020-1-17 15:21 | 只看该作者
非常感谢分享

使用特权

评论回复
13
jy6715| | 2022-2-21 15:56 | 只看该作者
请问楼主,我在使用cJSON时 jsonString = cJSON_Print(root);jsonString 接收到的时一个空指针。没有内容。是咋回事?敬请指教!谢谢
单片机是STM32103ZE  KEIL5下编译的

使用特权

评论回复
14
pklong| | 2022-2-22 16:51 | 只看该作者
分配内存的时候,如何释放呢

使用特权

评论回复
15
ingramward| | 2022-2-22 20:14 | 只看该作者
感觉cjson太强大了。   

使用特权

评论回复
16
linfelix| | 2022-2-22 22:50 | 只看该作者
怎么分配内存呢?      

使用特权

评论回复
17
usysm| | 2022-2-22 23:14 | 只看该作者
cJSON这个轻量库应用挺多的。  

使用特权

评论回复
18
zerorobert| | 2022-2-22 23:50 | 只看该作者
解码的效率怎么样   

使用特权

评论回复
19
olivem55arlowe| | 2022-2-23 15:08 | 只看该作者
由于c语言中,没有直接的字典,字符串数组等数据结构,所以要借助结构体定义,处理json

使用特权

评论回复
20
juliestephen| | 2022-2-23 15:52 | 只看该作者
cJSON可以应用在单片机上吗  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

438

帖子

3

粉丝