【ESP32_8266_WiFi (九)】JSON基础

JSON基础

1 JSON概念

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

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数组数据示例

"info": [
    {
        "name" : "taichi-maker",
        "website" : "www.taichi-maker.com"
    },
    {
        "year": 2020,
        "month": 12,
        "day": 30
    }
]

3.5 JSON对象数据示例

"info": {
    "name" : "taichi-maker",
    "website" : "www.taichi-maker.com"
}

3.6 JSON null 数据示例

“value” : null

4 JSON 对象

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


以下是含有单个数据的JSON对象示例:

{
    "name" : "taichi-maker"
}

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

{
    "name" : "taichi-maker",
    "website" : "www.taichi-maker.com"
}

我们再来看一个含有多个数据的JSON对象示例。该对象包含两个JSON数据。而每一个JSON数据又包含一个JSON对象。

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

从以上的示例我们可以看到,JSON对象中的数据使用逗号进行分隔。


:对象不能直接存放对象,以下示例是错误的。

{
  {
	"name": "taichi-maker",
	"website": "www.taichi-maker.com"
  },
  {
	"year": 2020,
	"month": 12,
	"day": 30
  }
}

:对象也不能直接存放数组,以下示例是错误的。

{
  "info": {
			"name": "taichi-maker",
			"website": "www.taichi-maker.com"
		  },
  [
	{
	"temperature" : 15
	}
  ]
}

5 JSON数组

数组(array) 是相同元素的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。 如下所示:

["Tom","Jerry","Shuke","Beita"][1,3,5,7]

数组可包含一个或者多个对象。以下是包含单个对象的数组示例:

[
    {
        "name" : "taichi-maker",
        "website" : "www.taichi-maker.com"
    }
]

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

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

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

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

请留意,在以上示例中。数组中的元素之间都是使用逗号进行分割的。


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

[
	"date": "2020-02-02",
	"weekday": "THU"
]

6 6. JSON 对象与数组混合存放示例

通过以下示例我们可以看到,该JSON对象包含有一个数据,数据名为results,该数据的值是一个数组。此数组只含有一个对象。此对象包含有三个数据。这三个数据的名称分别是:location、now和last_update。其中location的值是含有两个数据的对象。now的值是含有三个数据的对象。last_update的值是字符串”2020-03-01T20:10:00+08:00″。

{
  "results": [
    {
      "location": {
      				  "name": "Beijing",
    				  "country": "CN"
     			 },
      "now": {
      				 "text": "Clear",
     			     "code": "1",
   			         "temperature": "3"
   		    },
      "last_update": "2020-03-01T20:10:00+08:00"
    }
  ]
}

7 总结

JSON文件乍一看很复杂,但只要注意以下几点就可以分析出JSON数据内容。

首先注意以下符号的含义:

  1. 用于分隔数据的“名”和“值”
  2. {} 标注对象内容
  3. []标注数组内容
  4. 分隔数据、对象和数组


另外注意:

  • 对象用于存放数据(名值对)。
  • 对象不能直接存放对象或数组。
  • 数组存放元素有序号(序号起始值0)。
  • 数组不能直接存放数据(名值对)。

网上有很多网页JSON工具供我们使用。这里推荐oktools.net网站JSON在线工具。您可以使用该工具解析JSON文件,也可以用它来验证编写的JSON是否符合语法规则。



内容来自 -----> 太极创客
详情可见太极创客官网,内有Arduino、ESP32等详细教程
http://www.taichi-maker.com

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eiker_3169

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值