JSON 方法
JSON 不支持注释。向 JSON 添加注释无效。
JSON.stringify 的完整语法是:
let json = JSON.stringify(value[, replacer, space])
value
要编码的值。
replacer
要编码的属性数组或映射函数 function(key, value)。
space
格式化:
JSON.stringify
排除和转换:replacer
对它进行 反序列(deserialize),把它转换回 JavaScript 对象。让我们通过调用 JSON.parse 来完成:
如果一个对象具有 toJSON,那么它会被 JSON.stringify 调用。
space
用于格式化的空格数量
大部分情况,JSON.stringify 仅与第一个参数一起使用。但是,如果我们需要微调替换过程,比如过滤掉循环引用,我们可以使用 JSON.stringify 的第二个参数。
JSON(JavaScript Object Notation)是表示值和对象的通用格式。在 RFC 4627 标准中有对其的描述。最初它是为 JavaScript 而创建的,但许多其他编程语言也有用于处理它的库。因此,当客户端使用 JavaScript 而服务器端是使用 Ruby/PHP/Java 等语言编写的时,使用 JSON 可以很容易地进行数据交换。
javaScript 提供了如下方法:
#JSON.stringify 将对象转换为 JSON。
JSON.parse 将 JSON 转换回对象。
得到的 json 字符串是一个被称为 JSON 编码(JSON-encoded) 或 序列化(serialized) 或 字符串化(stringified) 或 编组化(marshalled) 的对象。我们现在已经准备好通过有线发送它或将其放入普通数据存储。
请注意,JSON 编码的对象与对象字面量有几个重要的区别:
字符串使用双引号。JSON 中没有单引号或反引号。所以 ‘John’ 被转换为 “John”。
对象属性名称也是双引号的。这是强制性的。所以 age:30 被转换成 “age”:30。
JSON.stringify 也可以应用于原始(primitive)数据类型。
JSON 支持以下数据类型:
Objects { … }
Arrays [ … ]
Primitives:
strings,
numbers,
boolean values true/false,
null。
例如
// 数字在 JSON 还是数字
alert( JSON.stringify(1) ) // 1
// 字符串在 JSON 中还是字符串,只是被双引号扩起来
alert( JSON.stringify('test') ) // "test"
alert( JSON.stringify(true) ); // true
alert( JSON.stringify([1, 2, 3]) ); // [1,2,3]
JSON 是语言无关的纯数据规范,因此一些特定于 JavaScript 的对象属性会被 JSON.stringify 跳过。
即:
函数属性(方法)。
Symbol 类型的键和值。
存储 undefined 的属性。
let user = {
sayHi() { // 被忽略
alert("Hello");
},
[Symbol("id")]: 123, // 被忽略
something: undefined // 被忽略
};
alert( JSON.stringify(user) ); // {}(空对象)