搜索
bottom↓
12
返回列表 发新帖
楼主: sunnydragon

【开源】C结构体与 JSON 快速互转库--struct2json 发布

  [复制链接]

出0入198汤圆

 楼主| 发表于 2016-12-20 22:29:16 | 显示全部楼层
kinsno 发表于 2016-12-18 19:10
那换一个方式,请问:多个元素的是否可解析出来;
比如:class A[128] = 转换(sd读出来的string)
还是说 ...

是的,是 一个 JSON 与 一个结构体对应。使用 struct2json 的结构体支持嵌套子结构体,但是不支持嵌套子结构体数组。

出0入0汤圆

发表于 2017-4-10 22:13:54 | 显示全部楼层
很赞,学习了谢谢!!

出0入0汤圆

发表于 2017-4-12 12:32:17 | 显示全部楼层
这个很好 谢谢了  收藏了

出0入0汤圆

发表于 2017-4-12 13:43:32 | 显示全部楼层
和服务器用json通信传输的都是ascii码吗?还是二进制。

出0入0汤圆

发表于 2017-9-7 23:45:49 | 显示全部楼层
正好需要,。谢谢楼主了‘

出0入8汤圆

发表于 2017-9-15 03:59:48 来自手机 | 显示全部楼层
里面的动态内存分配是怎么弄的

出0入198汤圆

 楼主| 发表于 2017-9-15 08:26:39 | 显示全部楼层
justdomyself 发表于 2017-9-15 03:59
里面的动态内存分配是怎么弄的

你指的是原理还是使用的配置?

出0入8汤圆

发表于 2017-9-15 10:30:30 | 显示全部楼层
sunnydragon 发表于 2017-9-15 08:26
你指的是原理还是使用的配置?

使用                        


出0入198汤圆

 楼主| 发表于 2017-9-15 19:40:16 | 显示全部楼层
把动态内存管理方法作为入参传递给 struct2json 就好了 https://github.com/armink/struct ... 2json/src/s2j.c#L41

出0入0汤圆

发表于 2017-12-6 12:05:43 | 显示全部楼层
感谢楼主的贡献,请教个问题,我在STM32做测试,用了你的DEMO文件,然而转换失败,跟踪到cJSON *json_student = struct_to_json(&orignal_student_obj);,查看内存,转换为JSON格式也并不对应。如下图
请问是什么情况会造成这种情况?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入198汤圆

 楼主| 发表于 2017-12-6 13:16:08 | 显示全部楼层
mii 发表于 2017-12-6 12:05
感谢楼主的贡献,请教个问题,我在STM32做测试,用了你的DEMO文件,然而转换失败,跟踪到cJSON *json_stude ...

是 GitHub 上最新的 Demo 吗?还真没遇到过这个情况

出0入0汤圆

发表于 2017-12-6 13:18:57 | 显示全部楼层
sunnydragon 发表于 2017-12-6 13:16
是 GitHub 上最新的 Demo 吗?还真没遇到过这个情况

是的,前两天刚下。你那 有稳定测试版本嘛?

出0入0汤圆

发表于 2017-12-6 14:48:50 | 显示全部楼层
sunnydragon 发表于 2017-12-6 13:16
是 GitHub 上最新的 Demo 吗?还真没遇到过这个情况

经过参考其他资料,使用cJson库的单片机,还需设置初始化文件startup_stm32fxx.s,其中的Heap_Size设置>3kB(0x00000c00),默认设置太小了,只有512B,没足够空间解释多项子项。修改完美解释。如图,json为经过cJSON_PrintUnformatted函数转换后结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入198汤圆

 楼主| 发表于 2017-12-6 15:54:42 | 显示全部楼层
mii 发表于 2017-12-6 14:48
经过参考其他资料,使用cJson库的单片机,还需设置初始化文件startup_stm32fxx.s,其中的Heap_Size设置>3k ...

所以你是改了工程配置才出现的这个问题吧。 cJSON 使用时,是需要一定的 heap 空间

出0入0汤圆

发表于 2017-12-6 16:14:00 | 显示全部楼层
sunnydragon 发表于 2017-12-6 15:54
所以你是改了工程配置才出现的这个问题吧。 cJSON 使用时,是需要一定的 heap 空间 ...

第一次玩JSON,测试环境是之前工程所建,所以配置都是默认。这也是一种经验,感谢你的回复。

出0入0汤圆

发表于 2018-3-13 10:47:05 | 显示全部楼层
请问,支持浮点类型吗

出0入198汤圆

 楼主| 发表于 2018-3-13 12:57:43 | 显示全部楼层
zhangling520 发表于 2018-3-13 10:47
请问,支持浮点类型吗

支持的~~

出0入0汤圆

发表于 2018-3-13 17:34:32 | 显示全部楼层
再一次体会楼主出品,必属精品了,感谢楼主,我以前用json的时候感觉也太累了,所有元素一个一个的添加,再次感谢楼主

出0入0汤圆

发表于 2018-3-15 13:49:20 | 显示全部楼层
{"StrArray":["#1:abc","#2:def"]}
请问像这样的,数组。 字符串数组。 怎么解?

出0入0汤圆

发表于 2020-3-27 14:05:00 | 显示全部楼层
mii 发表于 2017-12-6 14:48
经过参考其他资料,使用cJson库的单片机,还需设置初始化文件startup_stm32fxx.s,其中的Heap_Size设置>3k ...

我也遇到这个问题,Heap_Size也修改了,转换结果还是不对,不知道你如何解决的?

出0入0汤圆

发表于 2020-3-27 22:09:24 | 显示全部楼层
很好,谢谢分享

出0入0汤圆

发表于 2020-12-23 14:25:40 | 显示全部楼层
oooios 发表于 2020-3-27 22:09
很好,谢谢分享

问下楼主,结构体定义中有位域,支持吗?
比如这种形式的:
struct A
{
    int a:5;
    int b:3;
};

出0入0汤圆

发表于 2020-12-23 15:23:02 | 显示全部楼层
问下楼主,结构体定义中有位域,支持吗?
比如这种形式的:
struct A
{
     int a:5;
     int b:3;
};

出0入0汤圆

发表于 2020-12-25 08:31:47 | 显示全部楼层
收藏一下!

出0入0汤圆

发表于 2020-12-25 15:31:24 | 显示全部楼层
楼主威武,开源的都是顶级东东。虽然用不上,但是一定要顶一下的

出0入0汤圆

发表于 2020-12-25 20:23:57 来自手机 | 显示全部楼层
json和二进制协议有啥区别?

出0入0汤圆

发表于 2021-3-22 20:07:33 | 显示全部楼层
谢谢分享,学习了

出0入0汤圆

发表于 2021-8-15 17:45:14 | 显示全部楼层
有新版本 没有?????
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-30 02:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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