jSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
L( n5 ]5 |( M" Q rtthread物联网操作系统集成JSON软件包,可以通过ENV工具获取软件包。只需要几个指令,就可以完成JSON移植,非常方便。/ ]' s1 T$ v# `5 c: E% I
1、 打开辅助开发工具env,输入配置指令:"menuconfig",选中JSON。保存后退出,输入:pkgs --update命令下载软件包,输入:scons –-targer=mkd5命令,编译工程。4 z6 a0 K' d# X/ o* K' n8 X
% X. e3 q ]" b) a- o: T( p& u
" b6 {9 [" t" Z4 \9 l% H: q
2、程序示例! m4 U: M. t3 u( W% u; j% [& m7 O2 E
- void json_examples(){
) n7 |5 W1 G2 D5 l( C+ ] -
: n% w- r7 f9 o9 q- A' y
$ }8 V, e# c8 w% r$ B- m: {- cJSON * usr,*usr1,* Array,*usr2;
3 Z9 o5 B9 h1 G2 ^ - char *out;+ S! w! D# x. N1 z, E4 H2 w
-
! S$ ~; |+ Z2 k# k -
: s. i+ w# `6 n6 D( q - usr=cJSON_CreateObject(); //创建JSON对象. Z' Z. v' \$ D4 U
- cJSON_AddItemToObject(usr,"temp",cJSON_CreateNumber(22)); //在对象中添加数字
7 e( |) x0 c# G9 u1 s: C - cJSON_AddItemToObject(usr,"humi",cJSON_CreateNumber(22)); //在对象中添加数字2 p& x3 b' Z9 t& J! q3 m
- out= cJSON_Print(usr);9 k1 y0 }: h. I6 R0 v! b1 \8 T" W- p
- rt_kprintf("\r\n%s\r\n",out);) R3 m. p3 U* \! y7 E' D5 v
- free(out);//释放内存
( C9 n# C8 {2 ^. A) n! M - cJSON_Delete(usr);//删除JSON对象0 u0 [0 ^; A7 V: V! o
- / O- U. H5 `& H8 T4 v' ?( o
- usr=cJSON_CreateObject(); //创建JSON对象( o1 {* K. v' Y/ W, W
- cJSON_AddItemToObject(usr,"DeviceName",cJSON_CreateString("EIOT")); //在对象中添加字符串类型参数
) t8 D4 E: [& v2 T9 U4 G o - cJSON_AddItemToObject(usr,"DeviceValue",cJSON_CreateString("123456")); //在对象中添加字符串类型参数) h& @' P: }# i0 K
- out= cJSON_Print(usr);
5 ~! g3 g! H. N3 A6 F - rt_kprintf("\r\n%s\r\n",out);
6 m3 i' @' J2 O. s# ~; @' @, t - free(out);
3 w, j7 H! ^. @5 {8 _9 L5 k - cJSON_Delete(usr);0 K, h( x0 L4 m( G+ _ K& O: u
-
0 G: j7 [! W" I% e) u4 k - ( i" H3 n) y* X9 Q
- usr=cJSON_CreateObject(); //创建JSON对象
( `3 g2 ^( A3 }4 s - cJSON_AddItemToObject(usr,"power",cJSON_CreateTrue()); //在对象中添加布尔类型参数" x6 W* h, H/ `3 |2 l) t5 o, ]7 X8 A
- cJSON_AddItemToObject(usr,"power1",cJSON_CreateFalse());//在对象中添加布尔类型参数
1 r2 l7 a" r% F2 {% @" Y& d3 \4 C - out= cJSON_Print(usr);//json对象转换成字符串
6 z5 S/ f% q, q - rt_kprintf("\r\n%s\r\n",out);' ^ ]0 {/ I2 ]- ^+ v
- free(out);//释放内存
* q: r& [6 x3 ], w2 ~; V - cJSON_Delete(usr);//删除JSON对象
+ t2 E% V `/ {* C/ V - 3 f! m& n7 {1 a/ C% g0 S
- //创建json数组对象9 A) Y' D. f( L& U. g0 [$ y' W
- Array = cJSON_CreateArray();, M. t! Q) X% D# Y" v+ _6 {
- usr1 = cJSON_CreateObject();
: W: e( M: H0 ^* a: {+ A - cJSON_AddItemToArray(Array,usr1);
7 o7 C3 b: F+ I s - cJSON_AddItemToObject(usr1,"temp",cJSON_CreateNumber(22)); //在对象中添加数字( x4 i# ?# W; k$ E5 }
- cJSON_AddItemToObject(usr1,"humi",cJSON_CreateNumber(22)); //在对象中添加数字
2 a; [- Q9 f# }& O) g5 G& K3 { - out= cJSON_Print(usr);//json对象转换成字符串
" Z* K/ K, b1 e - cJSON_Delete(usr);) |7 @' Y6 {- c) q' O
- rt_kprintf("\r\n%s\r\n",out);
0 Q/ M6 o$ ]8 ` - free(out);# |$ ^6 u! q. Y% X, u
- 8 z O$ _' s6 f( q* ^; e
* B5 T+ Z- R' k, ^9 C* n- / E0 V6 w; u! [( L j6 a
- 8 C# d& y5 S, _% |1 Q" Q3 O2 Y6 a
- //json对象嵌套使用 G7 W( u/ ^ O" |5 }! e
- usr=cJSON_CreateObject(); //创建JSON对象
, Y4 u5 Z2 H! I8 p& U& A# T( e - Array = cJSON_CreateArray();
) p5 \$ E: c- T$ ^0 u$ R - cJSON_AddItemToObject(usr, "rows",Array );
: p# D; ]' c j, |( t2 b - usr1 = cJSON_CreateObject();
5 i8 A! P2 O, c' h$ v6 e - usr2 = cJSON_CreateObject();1 A! o) {: ?3 Z6 p" M! X: Y
- cJSON_AddItemToArray(Array,usr1);
3 y* }& i, e4 {! U - cJSON_AddItemToArray(Array,usr2);
X) _, p$ M. O3 w7 q( {; F -
4 T3 i% ]* o! J5 J% A7 H5 j - cJSON_AddItemToObject(usr1,"power",cJSON_CreateTrue());//在对象中添加布尔类项参数
/ R @9 i h8 N% l3 b - cJSON_AddItemToObject(usr1,"power1",cJSON_CreateFalse());
: s* {. s% t3 } - , |% `, c, m1 _; e f; s9 @* n
- cJSON_AddItemToObject(usr2,"temp",cJSON_CreateNumber(22)); //在对象中添加数字
$ t2 s4 \; b# @- \# R- @- N+ J - cJSON_AddItemToObject(usr2,"humi",cJSON_CreateNumber(22)); //在对象中添加数字
/ [. l3 F0 Y) {: x& O - . P5 L0 ~- h- Z* E% R; I
- out= cJSON_Print(usr);//json对象转换成字符串
' f3 C! D8 h; O9 Z7 e. r - cJSON_Delete(usr);//删除JSON对象' B. ?" o, d3 n5 O2 y
- rt_kprintf("\r\n%s\r\n",out);
8 S) s, g# k' v6 R# O) P. e' E& j - free(out);//释放内存
1 w$ W/ x; h# r2 G% u. ~; A -
! m& S8 G* g* h9 Q/ y7 H - }
复制代码 3、实验现象,如下图所示。$ l0 p( V7 k$ O! R4 p3 q H
源码参考:https://www.stmcu.org.cn/module/forum/thread-621278-1-1.html里面的资料/ z# x& F, ?$ s$ G6 x* q# V2 ^
|