JSON 一些简单知识

本文最后更新于:2020年5月17日 晚上

概览:JSON的一些简单知识,源自《JSON必知必会》。

参考书籍:《JSON必知必会》

[美] Lindsay Bassett 著

图灵程序设计丛书

什么是JSON

  • JSON:JavaScript 对象表示法(JavaScript Object Notation)。
  • JSON是一种数据交换格式,被许多系统用于交换数据。
  • JSON 独立于编程语言,表达数据的方式对通用的编程概念都很友好。

JSON语法

  • JSON基于JavaScript对象字面量,即使用了JS的对象字面量及其属性的语法表示:名称 — 值。

    • 所谓字面量是指对数据值的具体表示,例如x = 5,5就是一个数字字面量。
  • JSON中的名称 — 值 对形式为 "名称" : 值

    • 名称始终需要加双引号!
    • 值可以是字符串、数字、布尔值、null、对象或数组。
    • 名称 — 值 对 也称 属性 — 值 对 或者键—值对。
    • 值可以是字符串、数字、布尔值、null、数组或者对象。
  • 在JSON中,为了获得最大可移植性(“以一种双方系统都兼容的方式在平台间传递信息”),应该尽量避免使用空格或特殊字符(即 az、09 除外的其他字符)。

  • 构建对象:将花括号加在名称 - 值对的两边来使之成为一个对象,多个名称 - 值对使用逗号来分隔。

  • 追根溯源,JSON本身就是对象

1
2
3
4
5
6
{
"brand":"Crocs",
"color":"pink",
"size":9,
"hasLaces":false
}

JSON的数据类型

  • 数字:可以是整数、小数、负数或者指数。
  • 布尔值:只能是true或者false。其他形式写法都错误。
  • null:表示没有值,只能使用null,且必须小写。
  • 字符串:可由任何Unicode字符构成,必须用双引号包裹。
    • 转义字符,使用反斜线来进行转义,例如双引号用\"
  • 数组:由值构成的列表或者集合。每个值都可以是字符串、数字、布尔值、对象或数组中的任何一种,数组必须被方括号[] 包裹,且值与值之间用逗号隔开。
  • 对象:使用逗号分隔的,由名称-值构成的列表或者集合,并且使用花括号{}进行包裹。

数组或者对象是可以嵌套的。

JSON一个实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"person":{
"name":"Lindsay Bassett",
"heightInInches":66,
"head":{
"hair":{
"color":"light blond",
"length":"short",
"style":"A-line"
},
"eyes":"green"
}
}
}

其他

  • JSON 这种数据交换格式是可以作为独立的文件存在于文件系统中的。它的文件扩展名:.json
  • JSON 的 MIME 类型是 application/json 。

当你在传递数据时,需要提前告知接收方数据是什么类型,这就会涉及媒体类型。媒体类型也有一些你可能听过的其他称呼,如“互联网媒体类型”“内容类型”或“MIME 类型”。它使用“类型 / 子类型”这种格式来表示,比如你可能见过的 text/html 。

互联网数字分配机构(Internet Assigned Numbers Authority,IANA)维护着一个包含全部媒体类型的列表(http://www.iana.org/assignments/media-types/media-types.xhtml)。

JSON Schema(第四章)

  • JSON 验证器负责验证语法错误,JSON Schema 负责提供一致性检验

  • JSON Schema 是数据接收方的第一道防线,也是数据发送方节约时间、
    保证数据正确的好工具。

JSON Schema 可以解决下列有关一致性验证的问题。

  • 值的数据类型是否正确?
    可以具体规定一个值是数字、字符串等类型。

  • 是否包含所需要的数据?
    可以具体规定哪些数据是需要的,哪些是不需要的。

  • 值的形式是不是我需要的?
    可以指定范围、最小值和最大值。

JSON的一些作用

  • 作为数据交换格式,用于交换数据。
  • 作为一种文本格式,可作为JSON文档存储数据,例如:CouchDB是一种使用 JSON 文档存储数据的NoSQL 数据库。
  • 可将对象序列化为JSON或反序列化。
  • 可作为配置文件。

本文只占据这本书的一半的内容,剩余关于JSON的一些应用等内容并为写出,感兴趣可以自行查阅。

书籍链接:https://pan.baidu.com/s/1gNeClwP9Is2ohtsuVPdalA
提取码:hpb9