JSON是一种很好的数据存储格式,在JavaScript中被广泛使用,但不仅如此--发现它的所有内容
JSON是一种文件格式,用于存储和交换数据。
数据被存储在一组键值对中。
这种数据是人类可读的,这使得JSON非常适合人工编辑。
下面是一个JSON字符串的例子。
{
"name": "Flavio",
"age": 35
}
从这个小片段中,你可以看到键被包裹在双引号中,一个冒号将键和值分开,而且值可以是不同的类型。
键-值组由逗号分隔。
在JSON文件中,间距(空格、制表符、新行)并不重要。上述内容等同于
{"name": "Flavio","age": 35}
或
{"name":
"Flavio","age":
35}
但像往常一样,格式化的数据更容易理解。
JSON诞生于2002年,由于它的易用性和灵活性而大受欢迎,尽管它诞生于JavaScript世界,但很快就扩展到其他编程语言。
它被定义在ECMA-404标准中。
JSON字符串通常存储在.json 文件中,并以application/json MIME类型在网络上传输。
数据类型
JSON支持一些基本的数据类型。
Number: 任何没有用引号包裹的数字String: 任何用引号包裹的字符集Boolean:true或falseArray: 一个用方括号包裹的值的列表Object: 一组键值对,用大括号包装null:null,它代表一个空值。
任何其他的数据类型必须被序列化为字符串(然后再去序列化),才能被存储在JSON中。
在JavaScript中对JSON进行编码和解码
2009年ECMAScript 5在JavaScript标准中引入了JSON 对象,除此之外还提供了JSON.parse() 和JSON.stringify() 方法。
在可以在JavaScript程序中使用之前,必须对字符串格式的JSON进行解析,并将其转化为JavaScript可以使用的数据。
JSON.parse() 读取JSON字符串作为其参数,并返回一个包含解析后的JSON的对象。

JSON.stringify() 接受一个JavaScript对象作为参数,并返回一个用JSON表示的字符串。

JSON.parse() 也可以接受一个可选的第二个参数,称为reviver函数。你可以用它来挂钩解析并执行任何自定义操作。
JSON.parse(string, (key, value) => {
if (key === 'name') {
return `Name: ${value}`
} else {
return value
}
})
嵌套对象
你可以使用一个嵌套对象来组织JSON文件中的数据。
{
"name": {
"firstName": "Flavio",
"lastName": "Copes"
},
"age": 35,
"dogs": [
{ "name": "Roger" },
{ "name": "Syd" }
],
"country": {
"details": {
"name": "Italy"
}
}
}
有许多有用的工具你可以使用。
其中一个是JSONLint,JSON验证器。使用它,你可以验证一个JSON字符串是否有效。
JSONFormatter是一个很好的工具,用于格式化JSON字符串,使其根据你的习惯更容易阅读。
JSON模式
虽然JSON从一开始就非常灵活,但有时你需要一个更严格的组织来保持事物的完整性。
这时JSON Schema就会发挥作用。它是一种根据你创建的特定格式来注释和验证JSON文档的方法。