每个JSON对象,就是一个值。要么是简单类型的值,要么是复合类型的值。
- 复合类型的值只能是数组或对象.
-
简单类型的值只有四种:字符串、数值(十进制表示)、布尔值和
null。
-
字符串必须使用双引号表示,不能使用单引号。
-
对象的键名必须放在双引号里面。
-
数组或对象最后一个成员的后面,不能加逗号。
JSON.stringify
说明:将一个值转为字符串
JSON.stringify(1) // "1" JSON.stringify(false) // "false" JSON.stringify([]) // "[]" JSON.stringify({}) // "{}"
第二参数:
JSON.stringify方法还可以接受一个数组,作为第二个参数,指定需要转成字符串的属性。
例1:属性
var obj = {
'prop1': 'value1',
'prop2': 'value2',
'prop3': 'value3'
};
var selectedProperties = ['prop1', 'prop2'];
JSON.stringify(obj, selectedProperties) // "{"prop1":"value1","prop2":"value2"}"
例2:只对对象的属性有效,对数组无效。
JSON.stringify(['a', 'b'], ['0'])
// "["a","b"]"
JSON.stringify({0: 'a', 1: 'b'}, ['0'])
// "{"0":"a"}"
例3:第二个参数还可以是一个函数,用来更改JSON.stringify的默认行为。
function f(key, value) {
if (typeof value === "number") {
value = 2 * value;
}
return value;
}
JSON.stringify({ a: 1, b: 2 }, f) // '{"a": 2,"b": 4}'
/*f函数,接受两个参数,分别是被转换的对象的键名和键值。*/
第三参数:
说明:用于增加返回的JSON字符串的可读性。如果是数字,每个属性前面添加的空格不超过10个;如果是字符串(不超过10个);该字符串会添加在每行前面。
JSON.stringify({ p1: 1, p2: 2 }, null, 2); /* "{ "p1": 1, "p2": 2 }" */ JSON.stringify({ p1:1, p2:2 }, null, '|-'); /* "{ |-"p1": 1, |-"p2": 2 }" */
toJSON 方法
如果对象有自定义的toJSON
方法,那么JSON.stringify
会使用这个方法的返回值作为参数,而忽略原对象的其他属性。
例一: var user = { firstName: '三', lastName: '张', get fullName(){ return this.lastName + this.firstName; }, toJSON: function () { var data = { firstName: this.firstName, lastName: this.lastName }; return data; } }; JSON.stringify(user) // "{"firstName":"三","lastName":"张"}" 例二:JSON.stringify一旦发现处理的是data对象实例,就会自动调用这个实例对象的toJSON方法,将该方法的返回值作为参数。 var date = new Date('2015-01-01'); date.toJSON() // "2015-01-01T00:00:00.000Z" JSON.stringify(date) // ""2015-01-01T00:00:00.000Z"" 例三:将正则对象自动转为字符串。设置了toJSON方法以后,就可以转换正则对象了。 var obj = { reg: /foo/ }; // 不设置 toJSON 方法时 JSON.stringify(obj) // "{"reg":{}}" // 设置 toJSON 方法时 RegExp.prototype.toJSON = RegExp.prototype.toString; JSON.stringify(/foo/) // ""/foo/""
JSON.parse方法用于将JSON字符串转化成对象。
JSON.parse('{}') // {} JSON.parse('true') // true JSON.parse('"foo"') // "foo" JSON.parse('[1, 5, "false"]') // [1, 5, "false"] JSON.parse('null') // null
JSON.parse方法可以接受一个处理函数
function f(key, value) { if (key === ''){ return value; } if (key === 'a') { return value + 10; } } var o = JSON.parse('{"a":1,"b":2}', f); o.a // 11 o.b // undefined
↑↑看不懂
https://www.w3cschool.cn/javascript_guide/javascript_guide-l1232690.html