关于单片机的 json解析

阅读: 评论:0

关于单片机的 json解析

关于单片机的 json解析

因为项目使用到了网络,与服务进行http通讯,所以选择了使用json方式。

单片机通过串口与wifi模块,获取网络上的数据包,根据字符串处理拿到传输的json字符。

在单片机上处理json的方式简单发现了3种,开始用了frozen,在使用过程发现总在调用free()函数的时候卡死;

百度了一通,发现要把 head 的大小设置大一点。从512到8196,发现都不行,进而想是不是rt-thread嵌太深,

把栈撑坏了,又把栈给加大,也是在处理完一次json后死掉。

随想换一种方式解析,看看keil软件给自带了一种方式,网上推荐的还有 cJSON。去MDK官网下载支持包,

发现既有 jsmn 也有 cJSON的,前者网上只发现了打包的案例,加上又去掉了。所以最后用的是 cJSON的

方式,这种方式的案例网上有很多。按着搞了,也是不行,差不多与使用frozen遇到的情况一样。

看网上的都是自己构建json字符然后解析的。自己的是直接获取自己从服务器上返回的数据。我的json也没

毛病啊。随也简单构建了一个json自己写在单片机的代码上。发现可以了。想到自己从服务器上返回的json

包含整型数据。在串口打印的时候,整形数据没有被双引号引起。在服务器上把整形两边加上双引号,

解析成功。然后 ato() 方法把字符转换为整型,再用 %d 输出,嗯,就这样没啥毛病。这个坑让我试了两个方案,

花掉半个下午的时间。

	//	json_start = "{"msg":"OK","status":"200"}";json = cJSON_Parse(json_start);if(json == NULL){  // 		printf("get json err..rn");}else{cJSON* item = cJSON_GetObjectItem(json,"status");printf("status:%drn",atoi(item->valuestring));	
//			cJSON_Delete(item);cJSON_Delete(json);printf("get json ok..rn");}

 

本文发布于:2024-02-03 06:42:02,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170691372249311.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:单片机   json
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23