JSON 如何使用
在 JavaScript 中使用 JSON 数据
Section titled “在 JavaScript 中使用 JSON 数据”JSON 常用于在服务器和 Web 应用程序之间交换数据。JavaScript 提供了内置方法来有效且安全地处理 JSON 数据。
解析 JSON: JSON.parse()
Section titled “解析 JSON: JSON.parse()”当您收到 JSON 数据时,它通常是字符串形式 (例如,来自 Web 服务器或文件)。您需要将其转换为 JavaScript 对象或数组才能访问其中的数据。
执行此操作的标准且安全的方法是使用内置的 JSON.parse() 方法。
示例:解析 JSON 字符串
Section titled “示例:解析 JSON 字符串”考虑一个代表员工数据的 JSON 字符串:
const jsonString = '{ "department": "Engineering", "employees": [ { "firstName": "Alice", "lastName": "Green" }, { "firstName": "Bob", "lastName": "Smith" } ]}';使用 JSON.parse() 将此字符串转换为 JavaScript 对象:
try { const dataObject = JSON.parse(jsonString);
// 现在您可以像访问常规 JavaScript 对象一样访问数据 console.log(dataObject.department); // 输出: Engineering console.log(dataObject.employees[0].firstName); // 输出: Alice console.log(`There are ${dataObject.employees.length} employees.`); // 输出: There are 2 employees.
} catch (error) { // 处理潜在的解析错误 (如果 jsonString 不是有效的 JSON) console.error("Error parsing JSON string:", error);}重要提示: 如果输入字符串不是有效的 JSON,JSON.parse() 会抛出错误。处理外部数据时,建议将其放在 try...catch 块中。
字符串化 JavaScript: JSON.stringify()
Section titled “字符串化 JavaScript: JSON.stringify()”要将数据发送到服务器或将其存储为纯文本格式,您通常需要将 JavaScript 对象或数组转换为 JSON 字符串。
JSON.stringify() 方法负责此转换。
示例:将对象转换为 JSON 字符串
Section titled “示例:将对象转换为 JSON 字符串”const userProfile = { id: 101, username: "coderGal", email: "coder@example.com", isActive: true, lastLogin: new Date() // 日期会被转换为 ISO 字符串格式};使用 JSON.stringify() 将此对象转换为 JSON 字符串:
const jsonOutputString = JSON.stringify(userProfile);
console.log(jsonOutputString);// 输出可能如下所示:// {"id":101,"username":"coderGal","email":"coder@example.com","isActive":true,"lastLogin":"2023-10-27T10:30:00.000Z"}JSON.stringify() 还可以接受可选参数来控制格式化 (缩进) 和过滤属性。
带缩进的示例:
const formattedJsonString = JSON.stringify(userProfile, null, 2); // 使用 2 个空格进行缩进console.log(formattedJsonString);// 输出:// {// "id": 101,// "username": "coderGal",// "email": "coder@example.com",// "isActive": true,// "lastLogin": "2023-10-27T10:30:00.000Z"// }注意: JSON.stringify() 会忽略函数、undefined 值和 Symbol 属性。它会将 Date 对象转换为其 ISO 8601 字符串表示形式。
安全警告:避免使用 eval()
Section titled “安全警告:避免使用 eval()”过去,在 JSON.parse() 广泛可用之前,有时会使用 JavaScript 的 eval() 函数来解析 JSON 字符串。这是极其危险的,绝不应该这样做。
| ! | 安全风险: eval() 会执行传递给它的任何 JavaScript 代码。如果 JSON 字符串来自不受信任的来源,它可能包含恶意代码,eval() 将会执行这些代码,这可能会窃取数据或损害用户的系统。 |
|---|
始终使用 JSON.parse() 来解析 JSON 数据。 它专门为此目的设计,并且只解析数据而不执行代码,因此非常安全。
JSON.parse() 已成为 JavaScript 的标准,并多年来得到所有现代浏览器的支持。不再需要使用像 eval() 这样的旧的变通方法。
关于这些方法的更多详细信息,请参阅 MDN Web Docs: JSON 对象。