硬汉嵌入式论坛

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

[客户分享] 使用keil提供的JSON库——Jansson 在V5上移植

[复制链接]

82

主题

402

回帖

668

积分

金牌会员

积分
668
QQ
发表于 2018-9-3 22:15:27 | 显示全部楼层 |阅读模式
本帖最后由 雷鹏 于 2018-9-3 22:53 编辑

简单介绍了如何把cJSON移植到STM32上,实际上,keil环境下已经有官方的JSON库了——Jansson。下面是讲解如何导入和使用Jansson移植到V5开发板上。

下载地址:http://www2.keil.com/mdk5/partnerpacks/



测试代码
  • #include "bsp.h"
  • #include <jansson.h>
  • void jansson_pack_test(void)
  • {
  •     json_t *root;
  •     char *out;
  •     /* Build an empty JSON object */
  •     root = json_pack("{}");
  •     out = json_dumps(root, JSON_ENCODE_ANY);
  •     printf("out:%s\r\n", out);
  •     free(root);
  •     free(out);
  •     /* Build the JSON object {"foo": 42, "bar": 7} */
  •     root = json_pack("{sisi}", "foo", 42, "bar", 7);
  •     out = json_dumps(root, JSON_ENCODE_ANY);
  •     printf("out:%s\r\n", out);
  •     free(root);
  •     free(out);
  •     /* Like above, ':', ',' and whitespace are ignored */
  •     root = json_pack("{s:i, s:i}", "foo", 42, "bar", 7);
  •     out = json_dumps(root, JSON_ENCODE_ANY);
  •     printf("out:%s\r\n", out);
  •     free(root);
  •     free(out);
  •     /* Build the JSON array [[1, 2], {"cool": true}] */
  •     root = json_pack("[[i,i],{s:b}]", 1, 2, "cool", 1);
  •     out = json_dumps(root, JSON_ENCODE_ANY);
  •     printf("out:%s\r\n", out);
  •     free(root);
  •     free(out);
  •     /* Build a string from a non-null terminated buffer */
  •     char buffer[4] = {'t', 'e', 's', 't'};
  •     root = json_pack("[s#]", buffer, 4);
  •     out = json_dumps(root, JSON_ENCODE_ANY);
  •     printf("out:%s\r\n", out);
  •     free(root);
  •     free(out);
  •     /* Concatenate strings together to build the JSON string "foobarbaz" */
  •     root = json_pack("[s++]", "foo", "bar", "baz");
  •     out = json_dumps(root, JSON_ENCODE_ANY);
  •     printf("out:%s\r\n", out);
  •     free(root);
  •     free(out);
  • }

  • int main(void)
  • {
  •         bsp_Init();            
  •        printf("APP RUN..\r\n");
  •        jansson_pack_test();
  •        while(1)
  •        {}

  • }

打印

APP RUN..
out:{}
out:{"bar": 7, "foo": 42}
out:{"bar": 7, "foo": 42}
out:[[1, 2], {"cool": true}]
out:["test"]
out:["foobarbaz"]




其他信息





附源代码
mdkJansson.zip (804.38 KB, 下载次数: 142)





评分

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

查看全部评分

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

使用道具 举报

27

主题

70

回帖

151

积分

初级会员

积分
151
发表于 2018-12-21 10:27:26 | 显示全部楼层
这个test代码有问题,跑3遍就出错
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106847
QQ
发表于 2018-12-22 01:50:35 | 显示全部楼层
^张浩然 发表于 2018-12-21 10:27
这个test代码有问题,跑3遍就出错

用cJSON吧
回复

使用道具 举报

1

主题

369

回帖

372

积分

高级会员

积分
372
发表于 2018-12-24 00:19:10 | 显示全部楼层

最近也在看这个,和java对cjson格式,以前都是包头加指令就好了
回复

使用道具 举报

1

主题

109

回帖

112

积分

初级会员

固件開發工程師

积分
112
QQ
发表于 2018-12-24 09:26:06 | 显示全部楼层
我们用过JSMN,这个功能比较少,编译出来的Code Size很小。
如果对提及敏感,可以试试这个。
https://zserge.com/jsmn.html
不过,不知道跟Jansson比哪个更小。
      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name
       810          0          0          0          0       5869   jsmn.o
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-4-25 16:54:28 | 显示全部楼层
----- 发表于 2018-12-24 09:26
我们用过JSMN,这个功能比较少,编译出来的Code Size很小。
如果对提及敏感,可以试试这个。
https://zse ...

这个看起来不错。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 11:10 , Processed in 0.304445 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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