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
, _: b$ s6 p0 F2、程序示例' A: C4 r: y# c1 c% v$ F0 x
- void json_examples(){5 X) p$ L' M, v4 Z/ E, B
-
2 g! E. b) H1 B' ]! }5 Q - 8 h4 z2 r/ d7 y+ {) `$ X
- cJSON * usr,*usr1,* Array,*usr2;( p3 R; Z6 Y' O1 J! }* C
- char *out;
) B; o {4 `4 o+ I/ Z- [- D - ) ~( R8 }, O9 L7 n6 \+ \2 e" q
-
0 l- z, v' i" H! k' E7 h$ X - usr=cJSON_CreateObject(); //创建JSON对象; v1 a3 A0 {3 E! b2 T7 ?
- cJSON_AddItemToObject(usr,"temp",cJSON_CreateNumber(22)); //在对象中添加数字# r) c" L) Y$ C" a7 y
- cJSON_AddItemToObject(usr,"humi",cJSON_CreateNumber(22)); //在对象中添加数字
! L/ T8 S8 m9 _! B% ^+ h - out= cJSON_Print(usr);" k" u e x5 L3 y( e
- rt_kprintf("\r\n%s\r\n",out);% [ Y% U; l% {5 @: j
- free(out);//释放内存8 d* S3 k0 m! U& N( V
- cJSON_Delete(usr);//删除JSON对象
, I; s8 L$ h8 p/ p
9 _# Z" t, \( u* J. g+ c- usr=cJSON_CreateObject(); //创建JSON对象: l& H5 D1 o% l6 ^ I$ i6 O
- cJSON_AddItemToObject(usr,"DeviceName",cJSON_CreateString("EIOT")); //在对象中添加字符串类型参数; h! m/ g+ b% {" t' @5 |
- cJSON_AddItemToObject(usr,"DeviceValue",cJSON_CreateString("123456")); //在对象中添加字符串类型参数0 T1 f* m7 w3 K$ ~, L( ?- {+ K" w3 E8 l" K
- out= cJSON_Print(usr);
. S) _- y7 H$ u8 r4 L - rt_kprintf("\r\n%s\r\n",out);
, m8 s8 E, E& g: f) J! c - free(out);
' ?; l9 b6 Q% P) I. T6 T0 ? - cJSON_Delete(usr);" e# t+ H- ?$ A# t0 k" J
-
% j$ r; V* B8 m' Y - : K Q; C. u; \" s
- usr=cJSON_CreateObject(); //创建JSON对象/ u- g$ V$ @$ x7 m) N- T
- cJSON_AddItemToObject(usr,"power",cJSON_CreateTrue()); //在对象中添加布尔类型参数
# W+ C) V* e0 J& ~7 {4 S" o - cJSON_AddItemToObject(usr,"power1",cJSON_CreateFalse());//在对象中添加布尔类型参数
+ J6 f! {8 s x4 [! t/ ~9 s - out= cJSON_Print(usr);//json对象转换成字符串- c3 }. l) H W9 D3 L7 Z
- rt_kprintf("\r\n%s\r\n",out);# R5 o, X, u' v
- free(out);//释放内存/ K9 e5 ~1 ~: O
- cJSON_Delete(usr);//删除JSON对象% c6 c2 V2 P2 D% J
- - t |9 e: B' [* G0 _. O% J% [& s
- //创建json数组对象
# q, n) j3 H6 ?0 z2 Z - Array = cJSON_CreateArray();* Y1 K6 j* N& F8 S5 w
- usr1 = cJSON_CreateObject();
. C6 p( }1 {9 O3 R$ f - cJSON_AddItemToArray(Array,usr1);1 B' b1 Z# f/ s
- cJSON_AddItemToObject(usr1,"temp",cJSON_CreateNumber(22)); //在对象中添加数字
9 u7 M5 b: t* H - cJSON_AddItemToObject(usr1,"humi",cJSON_CreateNumber(22)); //在对象中添加数字
: [6 ?3 q( b% d% c$ |$ d - out= cJSON_Print(usr);//json对象转换成字符串9 M* X$ s$ }4 x0 ?" n4 L( J+ }
- cJSON_Delete(usr);) W7 V8 }) O4 Q) Q/ X3 c& I7 l
- rt_kprintf("\r\n%s\r\n",out);
6 m7 ^0 l8 i( h - free(out);
2 j! j4 U& l2 ^% K - ' H& U+ Q3 W3 _ y- | s
- ; `& G) t: |, `- P
- ' s! ]5 q, }; D7 m0 f
-
: {, X! M: p* b# U - //json对象嵌套使用+ B) O; [+ R3 s! R
- usr=cJSON_CreateObject(); //创建JSON对象3 b8 ]2 C7 R6 `' o4 e* G# c E
- Array = cJSON_CreateArray();
1 d- V2 F# H6 [+ ~/ Z - cJSON_AddItemToObject(usr, "rows",Array );
8 e! O b0 ^+ `% ~/ O - usr1 = cJSON_CreateObject();
" s0 E/ h2 U7 Z* s; ^/ y - usr2 = cJSON_CreateObject();: A) q) d- ]- m: d$ M0 f$ m* g" B
- cJSON_AddItemToArray(Array,usr1);4 w0 h# C+ \3 r# L& g; P
- cJSON_AddItemToArray(Array,usr2);
2 C1 y$ F" I7 w, p -
, X1 M( F! m9 ^0 g! P - cJSON_AddItemToObject(usr1,"power",cJSON_CreateTrue());//在对象中添加布尔类项参数
9 @5 P* {2 U! Y* t, e - cJSON_AddItemToObject(usr1,"power1",cJSON_CreateFalse());4 `( g- |( ]* A5 l8 d, |
-
1 v' p) c4 \; [ - cJSON_AddItemToObject(usr2,"temp",cJSON_CreateNumber(22)); //在对象中添加数字1 g- M- m* w! L1 i) x( i
- cJSON_AddItemToObject(usr2,"humi",cJSON_CreateNumber(22)); //在对象中添加数字/ e* {+ L: _$ T7 Q1 W* i* ~7 C7 z
- 1 s. n! y; q; t- ^7 Z9 }% _
- out= cJSON_Print(usr);//json对象转换成字符串. m. Q5 q) t$ H- w8 Y
- cJSON_Delete(usr);//删除JSON对象" \& p! `( F/ {1 @5 E
- rt_kprintf("\r\n%s\r\n",out);; X+ d! b0 i. n4 q. o/ U7 F
- free(out);//释放内存- e0 H8 X7 u' |4 X
-
% Y. V" e# H$ M/ k R" w8 X) x7 q$ L - }
复制代码 3、实验现象,如下图所示。& M( l+ W, L8 d# a% P4 I. x
源码参考:https://www.stmcu.org.cn/module/forum/thread-621278-1-1.html里面的资料
$ x- v- ~: T& h5 l, X |