JSON.parse()
JSON 的常见用途是在网络服务器之间交换数据。
当从网络服务器接收数据时,数据始终是一个字符串。
使用 JSON.parse()
解析数据,数据将变为 JavaScript 对象。
示例 - 解析 JSON
假设我们从网络服务器接收了以下文本
'{"name":"John", "age":30, "city":"New York"}'
使用 JavaScript 函数 JSON.parse()
将文本转换为 JavaScript 对象
const obj = JSON.parse('{"name":"John", "age":30, "city":"New York"}');
确保文本为 JSON 格式,否则会发生语法错误。
在页面中使用 JavaScript 对象
数组作为 JSON
当对来自数组的 JSON 使用 JSON.parse()
时,该方法将返回 JavaScript 数组,而不是 JavaScript 对象。
异常
解析日期
JSON 中不允许使用日期对象。
如果您需要包含日期,请将其写入字符串。
您可以在以后将其转换回日期对象
示例
将字符串转换为日期
const text = '{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text);
obj.birth = new Date(obj.birth);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
亲自试一试 »
或者,您可以使用 JSON.parse()
函数的第二个参数,称为 *reviver*。
*reviver* 参数是一个函数,它在返回值之前检查每个属性。
示例
使用 *reviver* 函数将字符串转换为日期
const text = '{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text, function (key, value) {
if (key == "birth") {
return new Date(value);
} else {
return value;
}
});
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
亲自试一试 »
解析函数
JSON 中不允许使用函数。
如果您需要包含函数,请将其写成字符串。
您可以在稍后将其转换回函数
示例
将字符串转换为函数
const text = '{"name":"John", "age":"function () {return 30;}", "city":"New York"}';
const obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");
document.getElementById("demo").innerHTML = obj.name + ", " + obj.age();
亲自试一试 »
您应该避免在 JSON 中使用函数,因为函数会失去其作用域,您必须使用 eval()
将其转换回函数。