
前言 & X+ {3 a# `+ H! x 在 STM32 OTA例程中,设备端(stm32F769探索版)与云端交换数据使用的是 json格式。在本篇文章中,将对 json格式以 及 Cjson的使用及注意事项进行说明。 6 M0 k9 V. W- W JSON 格式 % N* c) X" R7 o JSON(JavaScript Object Notation)是一个轻量级的数据交换格式。既便于开发者读写,也便于机器分析和构建。它独立于 开发语言,是一种文本格式,很适用描述在各个系统间交换的数据。 , _- u5 ^ ~9 z. c2 i1 f3 y JSON格式的数据看起来就像下面这个样子: ; F, d4 R7 p( |5 N# W { “Room1”: { ) e @4 c/ z, u1 U “LED”: “on”, ( X8 B: g" ?' K \' p; x “Temperature”: “36” } } 这个 JSON数据描述的是 Room1的 LED灯状态以及温度值。它由一组“名称(key)”以及对应的“ 值(value)”组成。 “名称”和“ 值”之间由“ :”分开。各组“名称:值”对之间由“,”符号进行分割。 ( x: @/ j3 n. ?" j9 c( R' J, u4 [ * s" t' O {# C3 v0 K, J cJSON 的使用 , T( r G) J* D( E7 a3 ]6 s 针对不同的开发语言,网上有很多 JSON的实现, demo里使用的是 Cjson,版本 1.6。它的源码可以在 http://github.com/DaveGamble/cJSON上下载。 . \5 g4 h5 p' `) ~8 z 将 Cjson 添加到工程 Cjson只有一个 C文件 Cjson.C和一个头文件 Cjson.h。所以只需要将这两个文件拷贝到工程文件夹中,并将 Cjson.C添加到 工程中就可以了。 数据结构 Cjson中使用下面的数据结构来表示 JSON数据。 ![]() *next和*prev 指针可以用来遍历“矩阵”或者“对象”类型的 JSON数据链表;这两种类型的 JSON数据还会有一个子数据 指针*child type : 表示该 json数据的类型,比如数字,字符串、矩阵、对象等 . N* Y, W+ f, F3 j z! h *valuestring, valueint, valuedouble和*string指针分别指向该 json数据类型具体的值,视其类型而定。 使用 cjson 生成 json 数据 6 O, G# I) Q3 y7 a$ V* R7 } 下面我们看看如何使用 cjson来生成下面的数据: { q) i! K) u# m% X A “reported”: { ; a, X+ O' B3 v3 _$ F “LED”: “on”, & ]6 g: O5 f3 H% e: P5 A, u4 { “status” : “normal” # K1 [- q2 p M0 b! B8 k2 t% O } $ X: z; P6 J$ w4 ~- h- v } 见下面的代码:' I! r6 R& V% w9 G2 i4 C2 _8 Y: G4 G ![]() ![]() ; Q# w, y# x/ Q4 g0 ^, [ |
这个在远程数据交互过程中可以看到有便捷性,在独立的单片机系统中有什么优势吗? |
请问这个OTA demo 在哪 ,就是源程序 ,我找半天没找着 |