零基础入门学用物联网(ESP8266) 第一部分 基础知识篇(五)

参考教程:https://www.bilibili.com/video/BV1L7411c7jw/?spm_id_from=333.1387.favlist.content.click

九、ESP8266通过JSON实现物联网数据通讯

1、JSON基础

(1)JSON(JavaScript Object Notation)是一种通用的轻量级数据交换文本格式,它很容易让人阅读和编写,也便于机器进行解析和生成。它使用JavaScript语法来存储和描述数据对象,但是JSON完全独立于JavaScript,可适用于多种流行编程语言。

(2)JSON语法规则要点:

①JSON文件中,存在三个重要的概念------数据、对象和数组。

②数据以"数据名""数据值"对的方式呈现,"数据名"(也称键)和"数据值"(也称键值)之间由冒号分隔。

③大括号"{}"用于标注对象内容,中括号"\[\]"用于标注数组内容,逗号用于分隔数据、对象和数组。

(3)JSON数据:

①JSON数据的书写格式为""JSON数据名":JSON数据值",JSON数据名需要放在双引号中,比如"Year":2026、"URL":"www.example.com"。

②JSON数据值的类型可以是:数字(整数或浮点数)、字符串、逻辑值(true或false)、JSON数组(在中括号中)、JSON对象(在大括号中)、null。

③一个JSON数据名称只能对应一个值(这个值是广义上的值,比如数据名称对应一个数组,可认为它是对应一个广义上的值,这个值指的是这一个数组)。

(4)JSON对象:

①JSON对象是一个无序的JSON数据集合(也称键值对集合),也就是说,一个JSON对象可以包含单个或者多个JSON数据,但是需要注意的是,JSON对象不能直接存放JSON对象或JSON数组。

②一个JSON对象以"{"(左括号)开始,"}"(右括号)结束,每个"名称"后跟一个":"(冒号),键值对之间使用","(逗号)分隔。

③举例:如下所示,该JSON对象中包含两个JSON数据,数据名分别为"info"和"date",其中数据名"info"对应的数据值为一个包含两个JSON数据的JSON对象,数据名"date"对应的数据值为一个包含三个JSON数据的JSON对象。

javascript 复制代码
{
  "info": {
	"name": "taichi-maker",
	"website": "www.taichi-maker.com"
  },
  "date": {
	"year": 2020,
	"month": 12,
	"day": 30
  }
}

(5)JSON数组:

①JSON数组是相同元素的有序集合。

②一个JSON数组以""(左中括号)开始,""(右中括号)结束,各元素之间使用","(逗号)分隔。

③JSON数组可包含一个或者多个JSON对象,如下所示。

javascript 复制代码
[
    {
      "name" : "taichi-maker",
      "website" : "www.taichi-maker.com"
   },
   {
      "year": 2020,
      "month": 12,
      "day": 30
   }
]

④数组也可以包含单个或多个数组,如下所示。

javascript 复制代码
[
    [
        {
            "name" : "taichi-maker",
            "website" : "www.taichi-maker.com"
        },
        {
            "year": 2020,
            "month": 12,
            "day": 30
        }
    ],
    [
        {
            "temperature" : 15,
        }
    ]		
]

⑤需要注意的是,JSON数组不能直接存放JSON数据,也就是说,所谓数组元素,不能是JSON数据。

(6)JSON对象与数组混合存放示例:

该JSON对象包含有一个JSON数据,数据名为results,该数据的值是一个JSON数组,此数组只含有一个JSON对象,此对象包含有三个JSON数据,这三个JSON数据的名称分别是------location、now和last_update,其中location的值是含有两个JSON数据的JSON对象,now的值是含有三个JSON数据的JSON对象,last_update的值是字符串"2020-03-01T20:10:00+08:00"

javascript 复制代码
{
  "results": [
    {
      "location": {
        "name": "Beijing",
        "country": "CN"
      },
      "now": {
        "text": "Clear",
        "code": "1",
        "temperature": "3"
      },
      "last_update": "2020-03-01T20:10:00+08:00"
    }
  ]
}
相关推荐
voipmaker9 小时前
GB28181 对接踩坑实录:注册不上、目录不全、流卡顿,一次说清(附 2022 版变更清单)
物联网·音视频·实时音视频·信息与通信·iot·gb28181·国标gb28181
吠品9 小时前
智谱开源 ZCode 之后,真正的考试才开始
单片机·嵌入式硬件·1024程序员节
Chery114010 小时前
高速ADC与精密DAC怎么选?DP9230D与DP8532D应用解析
嵌入式硬件·物联网·射频工程
小李不想当小白13 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
LCG米13 小时前
STM32驱动W5500以太网模块实测:TCP吞吐瓶颈定位、TX指针回绕陷阱与断线重连保活落地
stm32·单片机·嵌入式硬件·tcp/ip
创界工坊工作室15 小时前
63-基于STC89C52霍尔传感器的智能化电能表设计
stm32·单片机·嵌入式硬件·51单片机·proteus
智购科技自动售货机厂家16 小时前
让AI经营自动售货机:从Project Vend看工具权限与业务规则~YH
大数据·服务器·单片机·嵌入式硬件·深度学习
Zwawa17 小时前
从 printf 到曲线:把数据送上 VOFA+
c语言·单片机·嵌入式
意法半导体STM3217 小时前
【官方原创】LAT6048 如何扩大MP2的A35核和M33核共享内存
stm32·单片机·嵌入式硬件·内存映射·stm32mp2
en.en..18 小时前
STM32(F429)启动模式与两种烧录方式
stm32·单片机·嵌入式硬件