JSON.parse()
和 JSON.stringify()
是 JavaScript 中处理 JSON 数据格式的两个内置方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
JSON.stringify()
功能:将 JavaScript 对象或值转换成 JSON 字符串。
用法:
JSON.stringify(value[], replacer[], space)
- value:要转换的 JavaScript 值。
- replacer(可选):一个函数,用来过滤哪些属性应该被序列化,或者一个数组,用来指定要被序列化的属性名。
- space(可选):用于美化输出的字符串或数字,表示缩进的空格数。
示例:
const obj = { name: "mini", age: 1 };
const jsonString = JSON.stringify(obj, null, 2);
console.log(jsonString);
// 输出:
// {
// "name": "mini",
// "age": 1
// }
JSON.parse()
功能:解析 JSON 字符串,将其转换成 JavaScript 对象。
用法:
JSON.parse(text[], reviver[])
- text:要解析的 JSON 字符串。
- reviver(可选):一个函数,用来转换解析后的值。
示例:
const jsonString = '{"name": "mini", "age": 1}';
const obj = JSON.parse(jsonString);
console.log(obj);
// 输出:{ name: 'mini', age: 1 }
特点和注意事项
JSON.stringify()
可以处理 JavaScript 中的原始类型(如字符串、数字、布尔值等)和对象(包括数组和函数),但不能直接序列化函数、undefined
或循环引用的对象。JSON.parse()
可以解析 JSON 格式的字符串,生成对应的 JavaScript 对象或值。如果字符串不是有效的 JSON 格式,将抛出SyntaxError
。- 使用
replacer
参数可以控制序列化过程中哪些属性被包含或排除。 - 使用
reviver
参数可以在解析 JSON 对象时,对每个属性进行转换或验证。 - JSON 格式不支持日期、正则表达式等特殊对象的序列化和反序列化。