- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ArduinoJson库使用教程
Arduino Json 库使用教程
By 小橘子豆
今天为了完善手里ESP8266 开发板和乐联网的数据通信,折腾了好久POST 和GET。
相比来讲,对于任何物联网IOT 来说,都免不了云平台的json 字符解析。好在
Arduino 资源多,在github 上找到了关于Json 解析的库。今天就对这个库进行下介
绍。
Json 库下载地址
/bblanchon/ArduinoJson
下载之后按照安装要求解压到安装目录下的libraries 目录,
该目录下有如下的文件
把Arduino Json 解压到这里。
之后重启arduino IDE ,就能在示例中看到了。
下面介绍示例 :
打开乐联网的API 手册,我们能发现更新数据点的POST 格式是这样的。
[ { "Name":"T1", "Value":"1" }, { "Name":"01H1", "
Value":"96.2" }]
这里要介绍下,这种格式的生成方法。
首先,方括号[ ] 在库中被称作array ,也就是数组,而大括号{ }被称为Object ,也就
是对象。
在如上的json 中,我们分析的是,就要先创建一个array ,这个array 中又包含了两个
object ,那么代码如下 :
#include <ArduinoJson.h> 包含头文件
StaticJsonBuffer<200> jsonBuffer; 设置静态buffer
JsonArray& root = jsonBuffer.createArray(); 创建根,也就是最外边的array。
如果你的数据最外边是{ } ,那么你就要用
JsonObject& root = jsonBuffer.createObject() ;
JsonObject& son1= root.createNestedObject() ;设置下级的array 或者object。这
里可以通过root.createNestedObject()创建object 或者root.createNestedArray()创
建array ;
JsonObject& son2= root.createNestedObject(); 创建两个object
接下来为两个object 设置内容
son1["name"]="H1";
son1["value"]="566";
son2["name"]="H2";
son2["value"]="466";
显示整个JSON
root.printTo(Serial); //此处为打印到一行中
root.prettyPrintTo(Serial);此处为分行打印
运行结果 (忽略开头的乱码)
接下来说下Json 的解码
既然编码理解了,大家就知道如何解码了。打开示例
初始化的部分就不在提示了,直接进入正题
{
"Data": [
{
"updateTime": "2016/2/3 10:33:24",
"value": 5
}
],
"Successful": true,
"Message": null
}
解析的字符串用这个即可。使用方法很简单,
JsonObject& root = jsonBuffer.parseObject(json);
JsonObject& root = jsonBuffer.parseArray(json);
这两个方法当然对应了开头是{}和[]的情况。
先说第一种,解析Object ,
if (!root.success()) { //判断是否解析成功
Serial.println("parseObject() failed");
return;
}
成功之后执行
const char* sensor = root["Successful"];
const char* updateTime = root["Data"][0]["value"];
const char* updateTime1 = root["Data"][0]["updateTime"];
我觉得第一个大家都能理解,但是第二个和第三个怎么解释呢?我们回到要解析的字
符串,发现一
文档评论(0)