JSON数据和解析
JSON是一个字符串,常常用于网络传输数据的一种字符串格式。
理解 JSON 最关键的一点是要把它当成一种数据格式,而不是编程语言。JSON不属于JavaScript,它们只是拥有相同的语法而已。JSON 也不是只能在 JavaScript 中使用,它是一种通用数据格式。很多语言都有解析和序列化JSON的内置能力。
1、JSON语法
JSON语法支持表示3种类型的值:
- 简单值:字符串、数值、布尔值和null可以在JSON种出现,特殊值undefined不可以;
- 对象:第一种复杂数据类型,对象表示有序键/值对。每个值可以是简单值,也可以是复杂类型;
- 数组:第二种复杂数据类型,数组表示可以通过数值索引访问的值的有序列表。数组的值可以是任意类型,包括简单值、对象,甚至其他数组。
1、简单值
JSON可以是一个数值:例如:1,32,4……
类似的,字符串也是有效的JSON:
‘’Hello ,this is my girlfriend!‘’
值得注意的是:和JavaScript不同的是,JSON中字符串必须使用双引号,如果使用单引号则会导致语法错误。
2、对象
先来看看JavaScript种的对象字面量:
const person = {
name: "marry",
age: 20
};
而用 JSON 表示相同的对象的语法是:
{
"name": "marry",
"age": 20
}
不同的地方可以总结了:
- 没有变量声明(JSON 中没有变量);
- 最后没有分号(不需要,因为不是 JavaScript 语句)。
- 里面的对象里面的key值也要用双引号引起来(这也是为了后面的解析不会报错)。
属性的值可以是简单值或复杂数据类型值,后者可以在对象中再嵌入对象:
{
"name": "lc",
"age": 20,
"school": {
"name": "kk",
"location": "上海"
}
}
3、数组
JSON 的第二种复杂数据类型是数组。数组在 JSON 中使用 JavaScript 的数组字面量形式表示。
还是先来看看数组在JavaScript种的表示:
const arr=[18,'marry','男'];
在JSON中表示为:
[18,'marry','男']
同样的这里没有变量也没有分号。
数组和对象可以组合使用,表示更加复杂的数据结构:
[
{
"name": "lc",
"authors": [
"Nicholas C. Zakas",
"Matt Frisbie"
],
"edition": 4,
"year": 2017
},
{
"name": "wmj",
"authors": [
"Nicholas C. Zakas"
],