JSON详解
2017-06-02 本文已影响0人
胡博术
JSON不是一种编程语言,它只是一种数据结构
是啥就不介绍了,直接进入主题。
JSON的语法可以表示三种类型的值
- 简单值
5 //数字
"hello world" //字符串(JSON必须使用双引号)
//布尔值和null也是有效的JSON形式
- 对象
{
"name": "hu",
"age": 25
}
//与JS对象字面量相比,不用声明变量,末尾不需要封号
- 数组
[
{
"title": "BOOK1",
"year": 2011
},
{
"title": "BOKK2",
"year": 2017
}
]
JSON对象
JSON对象有两个方法:stringify()
和parse
,用于把JS对象序列化为JSON字符串和把JSON字符串解析为原声JS值。
注意:在序列化JS对象时, 所有的函数及原型成员都会被有意忽略,不体现在结果中,并且值为undefined的任何属性也都会被跳过
序列化选项 stringify()参数
除了要序列化的对象,还可以接收两个参数
- 第一个参数是个过滤器,可以是数组或者函数
当为数组时,返回的字符串结果中只会包含数组中的属性
var book = {
title: "mybooks",
year: 2017,
pages: 500,
edition: 3
}
JSON.stringify(book, ["title", "edition"])
//result
//{"title": "mybooks", "edtion": 3}
当为函数时,函数会接收两个参数,键名和属性值,函数返回的值就是相应的键的值,如何值为undefined,那么会被忽略
var book = {
title: "mybooks",
year: 2017,
pages: 500,
edition: 3
}
var jsonText = JSON.stringify(book, function(key, value){
switch(key){
case "page":
return 1000
case "edition":
return undefined;
default: //必须提供
return value
}
})
// {"title": "mybooks", "page": 1000, year: 2017}
- 第二个参数是一个选项,表示是否在JSON字符串中保留缩进
- 数字(用于控制每个级别的缩进空格数,最大长度为10)
- 字符串(被作为缩进字符,最大长度也为10)