硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2873|回复: 3
收起左侧

[客户分享] V5上移植cJSON,采用串口打印结果查看

[复制链接]

82

主题

401

回帖

667

积分

金牌会员

积分
667
QQ
发表于 2018-9-3 21:02:48 | 显示全部楼层 |阅读模式
本帖最后由 雷鹏 于 2020-6-7 19:44 编辑

由于项目的需要,要使用STM32解析和构造JSON数据,在V5的开发板上做了一个小的demo分享给大家。1.本例移植了cJSON,并在代码里面添加部分中文注释,大家可以在
http://www.armbbs.cn/forum.php?mod=viewthread&tid=22014&highlight=json
这个帖子里下载官方原版。
2.移植过程中务必增加堆(HEAP)的大小,本例子设置的是0C00。


正常打印

CPU : STM32F407IGT6, LQFP176, UID = 34323633 30355112 0050004C


*************************************************************

* 例程名称   : V5-stm32 json 解析 构造例子
* 例程版本   : 1.1
* 发布日期   : 2015-03-23
* 固件库版本 : V1.5.0 (STM32F4xx_StdPeriph_Driver)
*
* QQ    : 1295744630
* 旺旺  : armfly
* Email : armfly@qq.com
* 淘宝店: armfly.taobao.com
* Copyright www.armfly.com 安富莱电子
*************************************************************

/**************解析Json**************/
有格式的方式打印Json:
{
        "semantic":        {
                "slots":        {
                        "name":        "张三"
                }
        },
        "rc":        0,
        "operation":        "CALL",
        "service":        "telephone",
        "text":        "打电话给张三"
}

无格式的方式打印Json:
{"semantic":{"slots":{"name":"张三"}},"rc":0,"operation":"CALL","service":"telephone","text":"打电话给张三"}

一步一步的获取name 键值对:
获取semantic下的cjson对象:
{
  "slots":{
        "name": "张三"
        }
}
获取slots下的cjson对象
{
"name":"张三"
}
获取name下的cjson对象
"张三"
name:张三

打印json所有最内层键值对:
name->"张三"
rc->0
operation->"CALL"
service->"telephone"
text->"打电话给张三"
/**************构造Json**************/
{
  "rc":0,
  "operation":"CALL",
  "service":"telephone",
  "text":"打电话给张三",
  "semantic":{
   "slots": {"name": "张三"}
        }
}


如果设置小了就不能正常解析,例如200
例如串口打印结果
/**************解析Json**************/
Error before: [@]
/**************构造Json**************/
@

附代码
v5_json.rar (5.72 MB, 下载次数: 371)




评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2018-9-4 01:12:47 | 显示全部楼层
非常感谢分享
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2018-9-4 10:05:00 | 显示全部楼层
666
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2022-1-7 12:48:58 | 显示全部楼层
用GITHUB上最新的源代码,拿楼主的例程测试,在底层申请内存和释放内存的地方做计数,发现仅进行了申请内存malloc操作,并没有调用free,原因待查。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 13:59 , Processed in 0.174601 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表