jSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。7 N5 n8 _6 J/ k# X! d+ p
rtthread物联网操作系统集成JSON软件包,可以通过ENV工具获取软件包。只需要几个指令,就可以完成JSON移植,非常方便。! F5 |/ J2 q. b' S3 x6 T
1、 打开辅助开发工具env,输入配置指令:"menuconfig",选中JSON。保存后退出,输入:pkgs --update命令下载软件包,输入:scons –-targer=mkd5命令,编译工程。
- g6 z/ d+ Z8 `- w. R9 C! t* _) N) V6 x5 u! ?
) R0 @5 C. i9 H3 Q2、程序示例0 s- y% A8 S) T* S1 w& ?. o
- void json_examples(){
/ P1 u: n; ]: w6 @$ }& _ -
! d- `) ]9 I) k2 ?1 V# D
0 G1 ~6 T }3 d ], G- cJSON * usr,*usr1,* Array,*usr2;) C; k9 r1 z+ X2 K$ I4 z# M( h$ C
- char *out;
+ R; Y: ^5 u; b0 l' W$ s - 0 b+ F6 a4 D% _' M+ }
- 6 G+ F% n! ]( U
- usr=cJSON_CreateObject(); //创建JSON对象
& A+ z# x7 a& U+ t' J - cJSON_AddItemToObject(usr,"temp",cJSON_CreateNumber(22)); //在对象中添加数字
5 P' J, v9 F* e u - cJSON_AddItemToObject(usr,"humi",cJSON_CreateNumber(22)); //在对象中添加数字
4 \ M6 J3 ~* @- n; \' V+ l& z - out= cJSON_Print(usr);
* j) T/ y$ |' {0 O/ L, | - rt_kprintf("\r\n%s\r\n",out);% h0 a. m8 |; O
- free(out);//释放内存
9 ]3 |! L* t0 ]! @4 q; ~, _ - cJSON_Delete(usr);//删除JSON对象, {5 h2 }; E0 k6 A: j$ B# S5 g
- " Q( E6 M- C$ ?
- usr=cJSON_CreateObject(); //创建JSON对象' _0 s( a: Z4 r
- cJSON_AddItemToObject(usr,"DeviceName",cJSON_CreateString("EIOT")); //在对象中添加字符串类型参数$ u, ?- i/ c/ A( m$ C
- cJSON_AddItemToObject(usr,"DeviceValue",cJSON_CreateString("123456")); //在对象中添加字符串类型参数) R$ m8 Q- r6 ^2 k! K+ k- t
- out= cJSON_Print(usr);3 R8 l) C: ~( ~. L
- rt_kprintf("\r\n%s\r\n",out);+ e6 ]( s6 z$ S* X- k! M1 p
- free(out);
* n" }6 n/ Q' v( L" C6 K+ P - cJSON_Delete(usr);1 ]3 C" S+ s+ `/ \
-
4 N( ^7 H* S+ W/ X3 f0 U* ] - / B5 J. \' r! d& {% e4 j+ |! t
- usr=cJSON_CreateObject(); //创建JSON对象% h( {- T' e+ ?$ r- @' O
- cJSON_AddItemToObject(usr,"power",cJSON_CreateTrue()); //在对象中添加布尔类型参数
: |* H% m- U! o" z( h6 B$ a - cJSON_AddItemToObject(usr,"power1",cJSON_CreateFalse());//在对象中添加布尔类型参数
/ t3 c% b F- ~& A& x* m - out= cJSON_Print(usr);//json对象转换成字符串
( |* S4 ~, ?. @ - rt_kprintf("\r\n%s\r\n",out);
5 T j$ T B/ p0 m: U! t - free(out);//释放内存/ p$ }+ s8 S+ r
- cJSON_Delete(usr);//删除JSON对象
' n/ j& O; q! {: q, j6 O2 t- G+ e - ' q1 c3 d" \ {% W- _0 o
- //创建json数组对象7 P% |/ q+ j, A3 }! `0 \- d
- Array = cJSON_CreateArray();5 i/ n' s* m1 q$ j6 J7 s* B' P! J
- usr1 = cJSON_CreateObject();4 ~3 |8 b; w9 S$ w7 z7 ^
- cJSON_AddItemToArray(Array,usr1);
6 b& G* r) x& p; t* f* M - cJSON_AddItemToObject(usr1,"temp",cJSON_CreateNumber(22)); //在对象中添加数字
0 H2 R" u: R2 ?* j - cJSON_AddItemToObject(usr1,"humi",cJSON_CreateNumber(22)); //在对象中添加数字' }8 a# b) i* N- F) C: t! b3 K
- out= cJSON_Print(usr);//json对象转换成字符串 W/ F0 B/ y/ Z& a4 y1 y
- cJSON_Delete(usr);6 G) O* I1 h( g6 F
- rt_kprintf("\r\n%s\r\n",out);
( z$ D: M C6 \: P8 p8 m% i! b - free(out);( O, w2 n0 t- ]: K# p9 [- U7 p8 j3 j
- ( q' A6 r( i1 K: k7 x7 S
# ~5 \$ y9 c+ ^9 o, |-
: M! U% z- P7 R @: J" H9 u% _$ j -
6 [/ x( j0 R) L- M" E7 Q - //json对象嵌套使用2 L9 v0 W; `6 M: ^
- usr=cJSON_CreateObject(); //创建JSON对象/ s% H$ ^$ y( y* A/ m! R
- Array = cJSON_CreateArray();
2 L1 w2 H# n$ r& | - cJSON_AddItemToObject(usr, "rows",Array );! ]6 |2 ]5 d; x+ t( C5 z
- usr1 = cJSON_CreateObject();
- W" B& w% ]5 @ - usr2 = cJSON_CreateObject();1 n" L- Z/ }/ ~# ]0 B, n5 q
- cJSON_AddItemToArray(Array,usr1);& F! ?' U0 L* S; A/ M* H
- cJSON_AddItemToArray(Array,usr2);
3 H' Z. X8 s" y- j - , ~" m+ k" n/ v. X" G) r0 h
- cJSON_AddItemToObject(usr1,"power",cJSON_CreateTrue());//在对象中添加布尔类项参数
' [5 ?( t( ^. N3 ]" R- ? - cJSON_AddItemToObject(usr1,"power1",cJSON_CreateFalse());' u7 y" f# r% ^5 |
-
; B$ t, t, @7 @. t; ^ - cJSON_AddItemToObject(usr2,"temp",cJSON_CreateNumber(22)); //在对象中添加数字! Z9 N7 Y% m4 t/ x
- cJSON_AddItemToObject(usr2,"humi",cJSON_CreateNumber(22)); //在对象中添加数字
/ _0 n) O# G5 r3 l. z - 0 ]1 R w' b& n
- out= cJSON_Print(usr);//json对象转换成字符串
, e$ O1 F0 n3 o/ S2 s( G4 L - cJSON_Delete(usr);//删除JSON对象2 \, u$ d( A5 R7 l2 A2 e6 A
- rt_kprintf("\r\n%s\r\n",out);' P3 Z7 g: Y" F3 {$ Y/ j: @
- free(out);//释放内存; r/ F) d' M2 H& Q
-
( [9 q9 h# n) S; D - }
复制代码 3、实验现象,如下图所示。+ |4 ~& n. Y( j! M1 D5 w
源码参考:https://www.stmcu.org.cn/module/forum/thread-621278-1-1.html里面的资料0 f3 T7 r* z7 h9 a% j
|