2213|2

87

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【GD32E503评测】+ cJSON移植测试 [复制链接]

 

        JSON, 全称是”JavaScript Object Notation”, 它是一种基于文本,独立于语言的轻量级数据交换格式, XML也是一种数据交换格式,但是风格上我个人更喜欢JSON,因为XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记。

 

        JSON有两种表示结构,对象和数组。
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组

数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成。没了解过JSON的可以看看这个网站,有比较详细的介绍说明。

http://www.json.org.cn/

 

 

        单片机解析JSON的库有很多,这是在网络上找的,大家可以参考一下。

 

 

        因为对cJSON比较熟悉,所以我选择了cJSON移植到GD32E503开发板上。

 

        cJSON是开源的,在github上可以下载  https://github.com/DaveGamble/cJSON

        cJSON移植也比较简单,就是把这4个文件,cJSON .c、cJSON.h、cJSON_Utils.h、cJSON_Utils.c,添加到项目文件中去就可以了,加入测试程序,串口打印出数据。

 

 

        cJSON我在实际应用当中也经常碰到一些问题,最主要的还是内存分配。因为cJSON用的是编译器自带的malloc内存分配,所以Head堆空间要配置大一些,否则文件大了,容易出现内存不足而导致分配失败。本来计划用QSPI接口的SPIflash来存储解析,可是查看了开发板,发现很多IO口都已经分配殆尽。cJSON文件太大还是很耗内存资源的,如果用支持QSPI的可寻址这个特性来读取,效率就比较高了,因为cJSON解析JSON文件的时候,是要把整个文件都放在内存区域才能解析,也没办法预取部分来解析,所以对于内存空间较小的MCU,还是不推荐使用。

 

        最后附上源代码

        cJSON-master.zip (447.48 KB, 下载次数: 24)


         GD32E503V-EVAL-cJSON.rar (2.73 MB, 下载次数: 27)

 

最新回复

我都是用lua脚本实现   详情 回复 发表于 2021-2-24 13:33
点赞 关注
 
 

回复
举报

7452

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 

C/C++用json还真是别扭。不如java,javascript这种动态语言直接反序列化成对象。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

1181

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

我都是用lua脚本实现

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表