# JSON
JSON是一种数据格式,而不是一种编程语言。并不只是JavaScript才使用JSON,很多编程语言都具有针对JSON的解析器和序列化器
# 语法
JSON的语法可以表示为以下三种类型的值
- 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null,但不支持undefined
- 对象:一组无序的键值对
- 数组:一组有序值的列表
JSON不支持变量,函数或者对象实例
# 简单值
JavaScript字符串和JSON字符串最大的区别就是:JSON字符串必须使用双引号
# 对象
JSON中的对象与JavaScript中字面量稍微有一些不同
var person = {
name: 'sialvsic',
age: 29
};
JSON中的对象要求给属性加上引号,同时:不需要声明变量和分号
{
"name": 'sialvsic',
"age": 29
}
# 数组
JSON数组
[
{
"name": 'sialvsic',
"age": 24,
"food": ['apple', 'pear']
},
{
"name": 'star',
"age": 25
},
]
# 解析和序列化
JSON对象有两个方法:
stringify()
把JavaScript对象序列化为JSON字符串parse()
把JSON字符串解析为原生JavaScript值
# stringify
序列化的过程中,所有的函数以及原型成员都会被忽略,值为undefined的任意属性也会被跳过
const person = {
name: 'sialvsic',
age: 29,
school: {
name: 'baojizhongxue',
location: 'baoji'
}
};
//stringify
JSON.stringify(person);
=>
"{"name":"sialvsic","age":29,"school":{"name":"baojizhongxue","location":"baoji"}}"
stringify支持传入第二个参数(过滤器),第三个参数
- stringify(JavaScript对象, filter, )
# parse
//parse
JSON.parse(JSON.stringify(person););
=>
{
name: 'sialvsic',
age: 29,
school: {
name: 'baojizhongxue',
location: 'baoji'
}
}
或者:
const string = "{\"name\":\"sialvsic\",\"age\":29,\"school\":{\"name\":\"baojizhongxue\",\"location\":\"baoji\"}}";
JSON.parse(string);