JSON
语法
简单值
字符串(必须双引号)、数值、布尔值和null,特殊值undefined不可以
对象
属性名必须添加双引号
数组
和JavaScript数组字面量形式相同
解析与序列化
序列化选项
过滤结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| let book = { title: 'Professional JavaScript', authors: [ 'Nicholas C. Zakas', 'Matt Frisbie' ], edition: 4, year: 2017 } let jsonText = JSON.stringify(book, ['title', 'edition'])
jsonText = JSON.stringify(book, (key, value) => { switch(key) { case 'authors': return value.join(',') case 'year': return undefined default: return value } })
|
字符串缩进
1 2 3 4 5 6 7 8 9 10 11
| let book = { title: 'Professional JavaScript', authors: [ 'Nicholas C. Zakas', 'Matt Frisbie' ], edition: 4, year: 2017 } let jsonText = JSON.stringify(book, null, 2) jsonText = JSON.stringify(book, null, '----')
|
toJSON方法
1 2 3 4 5 6 7 8 9
| let book = { title: 'Professional JavaScript', edition: 4, year: 2017, toJSON: function() { return this.year } } let json = JSON.stringify(book)
|
解析选项
1 2 3 4 5 6 7 8
| let book = { title: 'Professional JavaScript', edition: 4, year: 2017, releaseDate: new Date(2023, 4, 30) } let text = JSON.stringify(book) let bookCopy = JSON.parse(text, (key, value) => key === 'releaseDate' ? new Date(value) : value)
|