位置导航: 首页 / 物联网教程 / 第3章 – 用C/C++开发物联网 / 3-4 网络客户端 / 本页
JSON(JavaScript Object Notation) 是一种通用的轻量级数据交换文本格式。它很容易让人阅读和编写,也便于机器进行解析和生成。它使用JavaScript语法来存储和描述数据对象,但是JSON完全独立于JavaScript。JSON可适用于多种流行编程语言。这些特性使JSON成为理想的数据交换格式。
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数组数据示例
1 2 3 4 5 6 7 8 9 10 11 |
"info": [ { "name" : "taichi-maker", "website" : "www.taichi-maker.com" }, { "year": 2020, "month": 12, "day": 30 } ] |
3.5 JSON对象数据示例
1 2 3 4 |
"info": { "name" : "taichi-maker", "website" : "www.taichi-maker.com" } |
3.6 JSON null 数据示例
“value” : null
4. JSON 对象
JSON对象在大括号{}中书写,对象可以包含单个或者多个JSON数据。
对象(object) 是一个无序的数据集合(“‘名/值’对”集合)。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名/值’ 对”之间使用“,”(逗号)分隔。
以下是含有单个数据的JSON对象示例:
1 2 3 |
{ "name" : "taichi-maker" } |
以下是含有多个数据的JSON对象示例。该对象由两个JSON数据组成。
1 2 3 4 |
{ "name" : "taichi-maker", "website" : "www.taichi-maker.com" } |
我们再来看一个含有多个数据的JSON对象示例。该对象包含两个JSON数据。而每一个JSON数据又包含一个JSON对象。
1 2 3 4 5 6 7 8 9 10 11 |
{ "info": { "name": "taichi-maker", "website": "www.taichi-maker.com" }, "date": { "year": 2020, "month": 12, "day": 30 } } |
从以上的示例我们可以看到,JSON对象中的数据使用逗号进行分隔。
注意:对象不能直接存放对象,以下示例是错误的。
1 2 3 4 5 6 7 8 9 10 11 |
{ { "name": "taichi-maker", "website": "www.taichi-maker.com" }, { "year": 2020, "month": 12, "day": 30 } } |
注意:对象也不能直接存放数组,以下示例是错误的。
1 2 3 4 5 6 7 8 9 10 11 |
{ "info": { "name": "taichi-maker", "website": "www.taichi-maker.com" }, [ { "temperature" : 15 } ] } |
5. JSON 数组
数组(array) 是相同元素的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。 如下所示:
["Tom","Jerry","Shuke","Beita"]
或者
[1,3,5,7]
数组可包含一个或者多个对象。以下是包含单个对象的数组示例:
1 2 3 4 5 6 |
[ { "name" : "taichi-maker", "website" : "www.taichi-maker.com" } ] |
以下是包含多个对象的数组示例:
1 2 3 4 5 6 7 8 9 10 11 |
[ { "name" : "taichi-maker", "website" : "www.taichi-maker.com" }, { "year": 2020, "month": 12, "day": 30 } ] |
数组也可以包含单个或多个数组,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[ [ { "name" : "taichi-maker", "website" : "www.taichi-maker.com" }, { "year": 2020, "month": 12, "day": 30 } ], [ { "temperature" : 15, } ] ] |
请留意,在以上示例中。数组中的元素之间都是使用逗号进行分割的。
注意:数组不能直接存放JSON数据。以下示例是错误的。
1 2 3 4 |
[ "date": "2020-02-02", "weekday": "THU" ] |
6. JSON 对象与数组混合存放示例
通过以下示例我们可以看到,该JSON对象包含有一个数据,数据名为results,该数据的值是一个数组。此数组只含有一个对象。此对象包含有三个数据。这三个数据的名称分别是:location、now和last_update。其中location的值是含有两个数据的对象。now的值是含有三个数据的对象。last_update的值是字符串”2020-03-01T20:10:00+08:00″。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "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数据内容。
首先注意以下符号的含义:
:用于分隔数据的“名”和“值”
{} 标注对象内容
[]标注数组内容
,分隔数据、对象和数组
另外注意:
对象用于存放数据(名值对)。
对象不能直接存放对象或数组。
数组存放元素有序号(序号起始值0)。
数组不能直接存放数据(名值对)。
网上有很多网页JSON工具供我们使用。这里我们推荐您我们使用多年的oktools.net网站JSON在线工具。您可以使用该工具解析JSON文件,也可以用它来验证编写的JSON是否符合语法规则。