ESP8266 学习九 stream 与json 数据格式

  • Stream – ESP8266物联网应用

    • stream 是一个数据系列,是一个有序的数据组 使用HTTP请求和响应信息演示Stream概念
      • 该示例程序中,ESP8266开发板通过client.print向服务器发送HTTP请求。这里开发板所发出的HTTP请求信息就是Stream数据。另外,以下示例程序中,ESP8266开发板通过client.readStringUntil来读取服务器响应信息。这里服务器响应信息也是Stream数据

      • 原因就是响应体的返回数据就是stream类型 如下图就是可以处理stream数据类型的库总和

    • 使用File对象演示Stream概念
      • 以下示例程序是从“3-3-1 ESP8266闪存文件系统基本操作”中的第1个示例程序修改而来。该示例程序通过dataFile.println来向文件中写入信息。使用dataFile.find从闪存文件内容里查找指定信息。使用dataFile.readString来获取信息。这些操作都是针对Stream数据的操作。

      • 可以看见此函数就是去查找IOT之后的数据并输出 所以输出的就是 word. 所以就是如此
      • 对数据流的处理 文件流 数据流
      • 下面我们来看一个Stream操作的实例。这个实例演示了如何利用find函数配合parseInt函数从ESP8266接收到的Serial数据中寻找整数数值。

      • 在以上示例中,当ESP8266找到了find函数所指定的参数“ok”后,随即在后续接收到的数据中查找数字信息。一旦找到数字,则通过串口监视器输出。接下来串口监视器还将输出找到数字后剩余的串口输入信息是什么。
  • JSON基础

  • JSON(JavaScript Object Notation) 是一种通用的轻量级数据交换文本格式。它很容易让人阅读和编写,也便于机器进行解析和生成。它使用JavaScript语法来存储和描述数据对象,但是JSON完全独立于JavaScript。JSON可适用于多种流行编程语言。这些特性使JSON成为理想的数据交换格式。
    • 借助 3.3.1的 客户端第二份代码进行 修改进行 第一次json请求 修改const char* host = "api.seniverse.com"; // 网络服务器地址 、、、、、其实这里讲解的是当我们的开发版向服务器发送请求之后就会接收到一个json格式的数据 在json数据里就会获取到我们需要的信息

    • String httpRequest = String("GET /v3/weather/now.josn?key=SCXC4Mj_0aB96cZup&location=lijiang&language=en&unit=c") + " HTTP/1.1\r\n" +
    • "Host: " + host + "\r\n" +
    • "Connection: close\r\n" +
    • "\r\n";
  • JavaScript Object Notation 其实JSON只是用JavaScript 编写的并不是说只是用于JavaScript
  • 1. JSON重点概念
    • 数据 对象 数组
  • 2. JSON语法规则要点
    • 数据以“名”“值”对呈现; 简单解释就是由一个名 一个值 凑成一对 来组成的 或者叫为键 值 对
    • 数据“名”和“值”之间由冒号分隔 :
    • 大括号{}用于标注对象内容 {}
    • 中括号[]用于标注数组内容 []
    • 逗号用于分隔数据、对象、数组 ,
  • 3. JSON数据
    • JSON数据以“名”“值”对呈现。数据“名”“值”由冒号分隔。JSON数据的书写格式是:
    • “JSON数据名”:JSON数据值
    • JSON数据举例:
    • “Year”: 2016
    • “URL”:”www.taichi-maker.com”
    • JSON数据名称
    • JSON数据名称需要放在双引号中。以下示例都是合法的JSON数据名:
    • “Value”、”信息1”
    • JSON数据值
    • JSON数据值可以是以下内容:
    • 数字(整数或浮点数)
    • 字符串
    • 逻辑值(true 或 false)
    • 数组(在中括号中)
    • 对象(在大括号中)
    • null
    • 注意:一个JSON数据名称只能对应一个值。以下是一系列JSON数据的举例。
  • 实例:
    • 3.1 JSON数字数据示例
    • "value" : 25
    • 3.2 JSON字符串数据示例
    • "name" : "taichi-maker"
    • 3.3 JSON逻辑值数据示例
    • "bool_value" : true
    • 3.4 JSON数组数据示例 一个名 后面的一个值 在此的一个值讲的是 一个数组值

    • 3.5 JSON对象数据示例

    • 3.6 JSON null 数据示例
    • “value” : null
  • 4. JSON 对象
    • JSON对象在大括号{}中书写,对象可以包含单个或者多个JSON数据。
    • 对象(object) 是一个无序的数据集合(“‘名/值’对”集合)。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名/值’ 对”之间使用“,”(逗号)分隔。
    • 以下是含有单个数据的JSON对象示例:

    • 以下是含有多个数据的JSON对象示例。该对象由两个JSON数据组成。

    • 我们再来看一个含有多个数据的JSON对象示例。该对象包含两个JSON数据。而每一个JSON数据又包含一个JSON对象。 从以下的示例我们可以看到,JSON对象中的数据使用逗号进行分隔。

    • 注意:对象 不能直接存放对象 对象也不能直接存放数组 以下都是错误的格式

  • 5. JSON 数组
    • 数组(array) 是相同元素的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。 如下所示:
      • ["Tom","Jerry","Shuke","Beita"] 、、结合数组的定义可知数组内的数据是有序号的
      • 或者
      • [1,3,5,7]
    • 数组可包含一个或者多个对象,但是对象不能包函数组。以下是包含单个对象的数组示例:

    • 以下是包含多个对象的数组示例:

    • 数组也可以包含单个或多个数组,如下所示: 请留意,在以上示例中。数组中的元素之间都是使用逗号进行分割的。

    • 注意:数组不能直接存放JSON数据。以下示例是错误的

  • 6. JSON 对象与数组混合存放示例
    • 通过以下示例我们可以看到,该JSON对象包含有一个数据,数据名为results,该数据的值是一个数组。此数组只含有一个对象。此对象包含有三个数据。这三个数据的名称分别是:location、now和last_update。其中location的值是含有两个数据的对象。now的值是含有三个数据的对象。last_update的值是字符串”2020-03-01T20:10:00+08:00″。
    • 所以就看逗号就可以 判断出有多少个数据

  • 7. 总结
    • JSON文件乍一看很复杂,但只要注意以下几点就可以分析出JSON数据内容。
    • 首先注意以下符号的含义:
    • :用于分隔数据的“名”和“值”
    • {} 标注对象内容
    • []标注数组内容
    • ,分隔数据、对象和数组
    • 另外注意:
    • 对象用于存放数据(名值对)。
    • 对象不能直接存放对象或数组。
    • 数组存放元素有序号(序号起始值0)。
    • 数组不能直接存放数据(名值对)。
    • 网上有很多网页JSON工具供我们使用。这里我们推荐您我们使用多年的oktools.net网站JSON在线工具。您可以使用该工具解析JSON文件,也可以用它来验证编写的JSON是否符合语法规则。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值