乐闻世界logo
搜索文章和话题

如何在 JavaScript 中解析和序列化 JSON 数据?

2月25日 23:17

JavaScript 中的 JSON 解析与序列化

在 JavaScript 中,处理 JSON 数据是非常常见的操作,主要涉及两个核心方法:

1. JSON 解析(Parse)

JSON.parse() 方法用于将 JSON 字符串转换为 JavaScript 对象。

基本用法

javascript
const jsonString = '{"name": "John", "age": 30, "city": "New York"}'; const obj = JSON.parse(jsonString); console.log(obj.name); // 输出: John

高级用法:使用 reviver 函数

JSON.parse() 可以接受第二个参数作为 reviver 函数,用于在解析过程中转换结果:

javascript
const jsonString = '{"name": "John", "birthDate": "2000-01-01"}'; const obj = JSON.parse(jsonString, (key, value) => { if (key === 'birthDate') { return new Date(value); } return value; }); console.log(obj.birthDate instanceof Date); // 输出: true

2. JSON 序列化(Stringify)

JSON.stringify() 方法用于将 JavaScript 对象转换为 JSON 字符串。

基本用法

javascript
const obj = {name: "John", age: 30, city: "New York"}; const jsonString = JSON.stringify(obj); console.log(jsonString); // 输出: {"name":"John","age":30,"city":"New York"}

高级用法

2.1 使用 replacer 参数

可以指定要包含的属性,或者对值进行转换:

javascript
const obj = {name: "John", age: 30, city: "New York", salary: 50000}; // 只包含指定属性 const jsonString1 = JSON.stringify(obj, ['name', 'age']); // 使用函数转换值 const jsonString2 = JSON.stringify(obj, (key, value) => { if (key === 'salary') { return value > 0 ? ' confidential ' : value; } return value; });

2.2 使用 space 参数

用于添加缩进和空白,使输出更易读:

javascript
const obj = {name: "John", age: 30, city: "New York"}; const jsonString = JSON.stringify(obj, null, 2); // 输出格式化的 JSON 字符串,缩进 2 个空格

注意事项

  1. 循环引用:如果对象中存在循环引用,JSON.stringify() 会抛出错误。
  2. undefined 和函数:这些值在序列化时会被忽略(对象中)或转换为 null(数组中)。
  3. Date 对象:会被转换为 ISO 格式的字符串。
  4. 正则表达式:会被转换为空对象 {}
  5. Symbol:作为对象键时会被忽略,作为值时会被转换为 undefined。
标签:JSON