JSON.stringify()
JSON.stringify()
1. 简介
在 JavaScript 中,JSON 是一种用于数据交换的格式,它以文本的形式表示数据,易于阅读和编写,同时可以轻松地进行解析和生成。JSON.stringify() 方法用于将 JavaScript 对象转换为 JSON 字符串。
2. 语法
JSON.stringify(value[, replacer[, space]])
3. 参数
- value: 必选参数,即要序列化为 JSON 字符串的值。
- replacer: 可选参数,用于筛选需要序列化的属性,可以是一个函数或一个数组。
- space: 可选参数,用于指定输出字符串的缩进,可以是一个整数或字符串。
4. 待序列化的对象
在使用JSON.stringify()方法时,我们需要注意待序列化的对象,该对象必须符合以下特征:
- JSON 对象
- 数组
- String
- Number
- Boolean
- null
5. replacer参数
replacer 参数用于指定序列化的属性,可以是一个函数或一个数组。
当 replacer 参数为函数时,它会在序列化对象时被调用,每个属性都会被函数接收并作为参数进行调用,函数返回值即为该属性的值,如果函数返回undefined,则不序列化当前属性。
如果 replacer 参数是一个数组,则仅序列化数组中包含的属性。
6. space参数
space 参数可以用于指定输出字符串的缩进,可以是一个整数或字符串。
当 space 参数为一个数字时,表示输出字符串缩进的空格数,比如:
JSON.stringify({a:1,b:{c:2}}, null, 4)
输出:
{
"a": 1,
"b": {
"c": 2
}
}
当 space 参数为字符串时,表示输出字符串缩进的符号,比如:
JSON.stringify({a:1,b:{c:2}}, null, '-')
输出:
{
-"a": 1,
-"b": {
--"c": 2
-}
}
7. 异常情况
- 对象包含循环引用时,JSON.stringify()会抛出错误。
- 当设置 replacer 参数为函数时,如果该函数返回值为 undefined,则该属性不会被序列化。
- 当设置 replacer 参数为数组时,如果该数组中包含循环引用或非法属性,则会被忽略。
8. 示例:
- 输出默认结果
JSON.stringify({'name': 'Tom', 'age': 18});
输出:
{"name":"Tom","age":18}
- 使用 replacer 参数
var obj = {'name': 'Tom', 'age': 18, 'gender': 'male'};
JSON.stringify(obj, ['name', 'gender']);
输出:
{"name":"Tom","gender":"male"}
- 使用 space 参数
var obj = {'name': 'Tom', 'age': 18, 'gender': 'male'};
JSON.stringify(obj, null, 4);
输出:
{
"name": "Tom",
"age": 18,
"gender": "male"
}
9. 总结
JSON.stringify() 方法将 JavaScript 对象转换为 JSON 字符串,具有很好的可读性和易解析性。我们可以通过 replacer 参数和 space 参数来过滤和格式化输出的内容。在使用该方法时,我们需要注意待序列化的对象必须符合 JSON 格式要求。