你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

[分享]WB-EIOT开发板移植rtthread系统的JSON软件包

[复制链接]
wbeast 发布时间:2019-7-30 11:32
      jSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。# w7 h( p+ _! b
    rtthread物联网操作系统集成JSON软件包,可以通过ENV工具获取软件包。只需要几个指令,就可以完成JSON移植,非常方便。( H4 G  P  d* a( ~5 O
1、 打开辅助开发工具env,输入配置指令:"menuconfig",选中JSON。保存后退出,输入:pkgs --update命令下载软件包,输入:scons –-targer=mkd5命令,编译工程。
/ S1 m, \; N& B( w, @
' F! k* p- i" t0 k8 S7 y 164630ov4eh4viizh3mhhc.png
, _: b$ s6 p0 F2、程序示例' A: C4 r: y# c1 c% v$ F0 x
  1. void json_examples(){5 X) p$ L' M, v4 Z/ E, B
  2.         
    2 g! E. b) H1 B' ]! }5 Q
  3. 8 h4 z2 r/ d7 y+ {) `$ X
  4.           cJSON * usr,*usr1,* Array,*usr2;( p3 R; Z6 Y' O1 J! }* C
  5.            char *out;
    ) B; o  {4 `4 o+ I/ Z- [- D
  6.         ) ~( R8 }, O9 L7 n6 \+ \2 e" q
  7.   
    0 l- z, v' i" H! k' E7 h$ X
  8.     usr=cJSON_CreateObject();   //创建JSON对象; v1 a3 A0 {3 E! b2 T7 ?
  9.          cJSON_AddItemToObject(usr,"temp",cJSON_CreateNumber(22));  //在对象中添加数字# r) c" L) Y$ C" a7 y
  10.          cJSON_AddItemToObject(usr,"humi",cJSON_CreateNumber(22));  //在对象中添加数字
    ! L/ T8 S8 m9 _! B% ^+ h
  11.           out= cJSON_Print(usr);" k" u  e  x5 L3 y( e
  12.           rt_kprintf("\r\n%s\r\n",out);% [  Y% U; l% {5 @: j
  13.            free(out);//释放内存8 d* S3 k0 m! U& N( V
  14.                  cJSON_Delete(usr);//删除JSON对象
    , I; s8 L$ h8 p/ p

  15. 9 _# Z" t, \( u* J. g+ c
  16.     usr=cJSON_CreateObject();   //创建JSON对象: l& H5 D1 o% l6 ^  I$ i6 O
  17.          cJSON_AddItemToObject(usr,"DeviceName",cJSON_CreateString("EIOT"));  //在对象中添加字符串类型参数; h! m/ g+ b% {" t' @5 |
  18.          cJSON_AddItemToObject(usr,"DeviceValue",cJSON_CreateString("123456"));  //在对象中添加字符串类型参数0 T1 f* m7 w3 K$ ~, L( ?- {+ K" w3 E8 l" K
  19.           out= cJSON_Print(usr);
    . S) _- y7 H$ u8 r4 L
  20.           rt_kprintf("\r\n%s\r\n",out);
    , m8 s8 E, E& g: f) J! c
  21.           free(out);
    ' ?; l9 b6 Q% P) I. T6 T0 ?
  22.                  cJSON_Delete(usr);" e# t+ H- ?$ A# t0 k" J
  23.         
    % j$ r; V* B8 m' Y
  24.         : K  Q; C. u; \" s
  25.     usr=cJSON_CreateObject();   //创建JSON对象/ u- g$ V$ @$ x7 m) N- T
  26.          cJSON_AddItemToObject(usr,"power",cJSON_CreateTrue()); //在对象中添加布尔类型参数
    # W+ C) V* e0 J& ~7 {4 S" o
  27.          cJSON_AddItemToObject(usr,"power1",cJSON_CreateFalse());//在对象中添加布尔类型参数
    + J6 f! {8 s  x4 [! t/ ~9 s
  28.           out= cJSON_Print(usr);//json对象转换成字符串- c3 }. l) H  W9 D3 L7 Z
  29.           rt_kprintf("\r\n%s\r\n",out);# R5 o, X, u' v
  30.           free(out);//释放内存/ K9 e5 ~1 ~: O
  31.                 cJSON_Delete(usr);//删除JSON对象% c6 c2 V2 P2 D% J
  32.                 - t  |9 e: B' [* G0 _. O% J% [& s
  33.                  //创建json数组对象
    # q, n) j3 H6 ?0 z2 Z
  34.                          Array = cJSON_CreateArray();* Y1 K6 j* N& F8 S5 w
  35.                          usr1 = cJSON_CreateObject();
    . C6 p( }1 {9 O3 R$ f
  36.                   cJSON_AddItemToArray(Array,usr1);1 B' b1 Z# f/ s
  37.                  cJSON_AddItemToObject(usr1,"temp",cJSON_CreateNumber(22));  //在对象中添加数字
    9 u7 M5 b: t* H
  38.             cJSON_AddItemToObject(usr1,"humi",cJSON_CreateNumber(22));  //在对象中添加数字
    : [6 ?3 q( b% d% c$ |$ d
  39.                   out= cJSON_Print(usr);//json对象转换成字符串9 M* X$ s$ }4 x0 ?" n4 L( J+ }
  40.             cJSON_Delete(usr);) W7 V8 }) O4 Q) Q/ X3 c& I7 l
  41.             rt_kprintf("\r\n%s\r\n",out);
    6 m7 ^0 l8 i( h
  42.                          free(out);
    2 j! j4 U& l2 ^% K
  43.         ' H& U+ Q3 W3 _  y- |  s
  44. ; `& G) t: |, `- P
  45.         ' s! ]5 q, }; D7 m0 f
  46.         
    : {, X! M: p* b# U
  47.            //json对象嵌套使用+ B) O; [+ R3 s! R
  48.                    usr=cJSON_CreateObject();   //创建JSON对象3 b8 ]2 C7 R6 `' o4 e* G# c  E
  49.                          Array = cJSON_CreateArray();
    1 d- V2 F# H6 [+ ~/ Z
  50.                   cJSON_AddItemToObject(usr, "rows",Array );
    8 e! O  b0 ^+ `% ~/ O
  51.                          usr1 = cJSON_CreateObject();
    " s0 E/ h2 U7 Z* s; ^/ y
  52.                          usr2 = cJSON_CreateObject();: A) q) d- ]- m: d$ M0 f$ m* g" B
  53.                   cJSON_AddItemToArray(Array,usr1);4 w0 h# C+ \3 r# L& g; P
  54.                          cJSON_AddItemToArray(Array,usr2);
    2 C1 y$ F" I7 w, p
  55.                                 
    , X1 M( F! m9 ^0 g! P
  56.                         cJSON_AddItemToObject(usr1,"power",cJSON_CreateTrue());//在对象中添加布尔类项参数
    9 @5 P* {2 U! Y* t, e
  57.             cJSON_AddItemToObject(usr1,"power1",cJSON_CreateFalse());4 `( g- |( ]* A5 l8 d, |
  58.          
    1 v' p) c4 \; [
  59.                   cJSON_AddItemToObject(usr2,"temp",cJSON_CreateNumber(22));  //在对象中添加数字1 g- M- m* w! L1 i) x( i
  60.             cJSON_AddItemToObject(usr2,"humi",cJSON_CreateNumber(22));  //在对象中添加数字/ e* {+ L: _$ T7 Q1 W* i* ~7 C7 z
  61.          1 s. n! y; q; t- ^7 Z9 }% _
  62.                   out= cJSON_Print(usr);//json对象转换成字符串. m. Q5 q) t$ H- w8 Y
  63.             cJSON_Delete(usr);//删除JSON对象" \& p! `( F/ {1 @5 E
  64.             rt_kprintf("\r\n%s\r\n",out);; X+ d! b0 i. n4 q. o/ U7 F
  65.                          free(out);//释放内存- e0 H8 X7 u' |4 X
  66.         
    % Y. V" e# H$ M/ k  R" w8 X) x7 q$ L
  67. }
复制代码
3、实验现象,如下图所示。& M( l+ W, L8 d# a% P4 I. x
TIM截图20190726160304.png 源码参考:https://www.stmcu.org.cn/module/forum/thread-621278-1-1.html里面的资料
$ x- v- ~: T& h5 l, X
赞 收藏 评论4 发布时间:2019-7-30 11:32

举报

4个回答
andey 回答时间:2019-7-30 14:03:50
提示: 作者被禁止或删除 内容自动屏蔽
wangallenwang 回答时间:2019-8-8 15:44:25
wangallenwang 回答时间:2019-8-14 10:21:09
wangallenwang 回答时间:2019-8-23 10:53:33
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版