📜  json 解析返回对象 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:04.629000             🧑  作者: Mango

JSON 解析返回对象 - JavaScript

在 JavaScript 中,我们经常需要将 JSON 字符串解析为对象来进行操作。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,通常用于前后端数据交互。

解析 JSON 字符串为对象

在 JavaScript 中,我们可以使用 JSON.parse() 方法将 JSON 字符串解析为对象。

const jsonString = '{"name": "Alice", "age": 20}';
const obj = JSON.parse(jsonString);
console.log(obj); // {name: "Alice", age: 20}
解析 JSON 字符串中的数组

当 JSON 字符串中包含数组时,我们同样可以使用 JSON.parse() 方法进行解析。

const jsonString = '{"users": [{"name": "Alice", "age": 20}, {"name": "Bob", "age": 25}]}';
const obj = JSON.parse(jsonString);
console.log(obj); // {users: [{name: "Alice", age: 20}, {name: "Bob", age: 25}]}
处理 JSON 解析错误

当解析的 JSON 字符串格式不正确时,JSON.parse() 方法会抛出异常。我们可以使用 try...catch 块来处理异常。

const jsonString = '{"name": "Alice, "age": 20}';
try {
  const obj = JSON.parse(jsonString);
  console.log(obj);
} catch (e) {
  console.error(e); // SyntaxError: Unexpected token '}' in JSON at position 16
}
序列化对象为 JSON 字符串

在 JavaScript 中,我们可以使用 JSON.stringify() 方法将对象序列化为 JSON 字符串。

const obj = {name: "Alice", age: 20};
const jsonString = JSON.stringify(obj);
console.log(jsonString); // '{"name":"Alice","age":20}'
序列化对象中的数组

当对象中包含数组时,我们同样可以使用 JSON.stringify() 方法进行序列化。

const obj = {users: [{name: "Alice", age: 20}, {name: "Bob", age: 25}]};
const jsonString = JSON.stringify(obj);
console.log(jsonString); // '{"users":[{"name":"Alice","age":20},{"name":"Bob","age":25}]}'
处理序列化中的循环引用

当对象中存在循环引用时,使用 JSON.stringify() 方法进行序列化会抛出异常。我们可以通过传入可选参数 replacer 来避免异常的抛出。

const obj = {name: "Alice", friends: []};
obj.friends.push(obj);

const jsonString = JSON.stringify(obj, (key, value) => {
  if (key === 'friends' && value.length > 0) {
    return value.map(friend => friend.name);
  }
  return value;
});

console.log(jsonString); // '{"name":"Alice","friends":["Alice"]}'

以上是 JSON 解析返回对象的介绍,希望对您有所帮助!