在JavaScript中,`JSON` 是一个全局对象,提供了两个非常有用的方法来处理JSON(JavaScript Object Notation)数据:`JSON.parse()` 和 `JSON.stringify()`。以下是这两个方法的详细说明和使用示例。
### JSON.parse()
`JSON.parse()` 方法用于将JSON字符串转换为JavaScript对象。这是在处理从服务器接收的数据或解析存储在文本文件中的数据时非常有用的。
**基本用法**:
```javascript
const jsonString = '{"name": "John", "age": 30}';
const jsonObject = JSON.parse(jsonString);
console.log(jsonObject.name); // 输出: John
console.log(jsonObject.age); // 输出: 30
```
**错误处理**:
由于JSON数据可能不是有效的JSON格式,因此在解析时可能会抛出 `SyntaxError`。为了避免程序崩溃,可以使用 `try...catch` 语句来捕获错误。
```javascript
const jsonString = '{"name": "John", "age": "30"}'; // 注意这里的30被错误地加上了引号
try {
const jsonObject = JSON.parse(jsonString);
console.log(jsonObject);
} catch (error) {
console.log("Parsing error:", error);
}
```
### JSON.stringify()
`JSON.stringify()` 方法用于将JavaScript对象转换为JSON字符串。这在你需要将数据发送到服务器或将对象保存到文本文件中时非常有用。
**基本用法**:
```javascript
const jsonObject = { name: "John", age: 30 };
const jsonString = JSON.stringify(jsonObject);
console.log(jsonString); // 输出: {"name":"John","age":30}
```
**美化输出**:
`JSON.stringify()` 方法可以接受额外的参数来控制输出格式。例如,你可以指定缩进用的空格数来美化输出的JSON字符串。
```javascript
const jsonObject = { name: "John", age: 30 };
const jsonString = JSON.stringify(jsonObject, null, 2); // 第三个参数指定缩进
console.log(jsonString);
/*
输出:
{
"name": "John",
"age": 30
}
*/
```
**替换和过滤**:
`JSON.stringify()` 还可以接受一个替换函数或者一个数组作为第二个参数,用于控制哪些数据被包括在生成的JSON字符串中。
```javascript
const jsonObject = { name: "John", age: 30, department: "IT" };
// 使用函数过滤
const jsonStringFunc = JSON.stringify(jsonObject, (key, value) => {
if (key === "age") {
return undefined; // 不包括age属性
}
return value;
});
console.log(jsonStringFunc); // 输出: {"name":"John","department":"IT"}
// 使用数组过滤
const jsonStringArr = JSON.stringify(jsonObject, ["name", "department"]);
console.log(jsonStringArr); // 输出: {"name":"John","department":"IT"}
```
通过这些方法,你可以在JavaScript中灵活地处理JSON数据,无论是解析来自外部源的JSON字符串,还是将JavaScript对象转换为JSON格式以便传输或存储。