📅  最后修改于: 2023-12-03 15:17:04.629000             🧑  作者: Mango
在 JavaScript 中,我们经常需要将 JSON 字符串解析为对象来进行操作。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,通常用于前后端数据交互。
在 JavaScript 中,我们可以使用 JSON.parse()
方法将 JSON 字符串解析为对象。
const jsonString = '{"name": "Alice", "age": 20}';
const obj = JSON.parse(jsonString);
console.log(obj); // {name: "Alice", age: 20}
当 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.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
}
在 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 解析返回对象的介绍,希望对您有所帮助!