下面是关于 JavaScript 中 JSON.parse 函数和 JSON.stringify 函数的详细讲解。
JSON 简介
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于 JavaScript 的一个子集,可以被多种不同编程语言读取和写入。
在 JavaScript 中要想将 JSON 数据转换为对象,或者将对象转换为 JSON 数据,可以使用 JSON.parse() 和 JSON.stringify() 方法。
JSON.parse() 方法
JSON.parse() 方法用于将一个JSON字符串转换为JavaScript对象。
基本用法:
const jsonStr = '{"name":"Jack", "age": 18, "city":"New York"}'
const obj = JSON.parse(jsonStr)
console.log(obj.name) // 输出 "Jack"
如果 JSON 字符串不符合规范(如缺失双引号或者属性名未加引号等),则该方法会抛出 SyntaxError 错误。
在 JSON.parse() 方法中还有一个可选的 reviver 参数,可以用来修改解析出来的对象或者数组。
例如,下面的代码演示了 reviver 参数的用法:
const jsonStr = '{"name":"Jack", "age": 18, "city":"New York"}'
const obj = JSON.parse(jsonStr, (key, value) => {
if (key === 'age') {
return value + 1
}
return value
})
console.log(obj.age) // 输出 19
在这个例子中,reviver函数判断如果键值为 "age" ,则将值加1后返回,否则返回原始值。
JSON.stringify() 方法
JSON.stringify() 方法将 JavaScript 对象或数组转换为 JSON 字符串。
基本用法:
const obj = {name: 'Jack', age: 18, city: 'New York'}
const jsonStr = JSON.stringify(obj)
console.log(jsonStr)
// 打印结果: {"name": "Jack","age":18,"city":"New York"}
在 JSON.stringify() 方法中还包括第二个和第三个可选参数,分别是 replacer 和 space。
replacer 参数可以是一个函数或者数组。如果参数是一个函数,该函数将有机会修改存储在 JSON 字符串中的每个值。如果参数是一个数组,只有包含在数组中的属性名才会被序列化到 JSON 字符串中。
例如:
const obj = { a: 1, b: 2, c: 3 }
const jsonStr = JSON.stringify(obj, ['a', 'c'])
console.log(jsonStr)
// 打印结果:{"a":1, "c":3}
// 使用 replacer 函数过滤
const jsonStr2 = JSON.stringify(obj, (key, value) => {
if (key === 'a') {
return undefined
}
return value
})
console.log(jsonStr2)
// 打印结果:{"b":2,"c":3}
space 参数可选,用来控制缩进的空格数。例如:
const obj = {name: 'Jack', age: 18, city: 'New York'}
const jsonStr = JSON.stringify(obj, null, 2)
console.log(jsonStr)
// 打印结果:
// {
// "name": "Jack",
// "age": 18,
// "city": "New York"
// }
以上是关于 JSON.parse() 和 JSON.stringify() 方法的详细讲解攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数 - Python技术站