JSON 的常见用途是与 Web 服务器交换数据。
从 Web 服务器接收数据时,数据始终是字符串。
解析数据JSON.parse()
,数据就变成了 JavaScript 对象。
想象一下我们从网络服务器收到了这样的文本:
'{"name":"John", "age":30, "city":"New York"}'
使用 JavaScript 函数JSON.parse()
将文本转换为 JavaScript 对象:
const obj = JSON.parse('{"name":"John", "age":30, "city":"New York"}');
确保文本是 JSON 格式,否则会出现语法错误。
在页面中使用 JavaScript 对象:
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name;
</script>
亲自试一试 »
当使用JSON.parse()
对于从数组派生的 JSON,该方法将返回 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()
函数,称为复兴者。
这个复兴者参数是一个在返回值之前检查每个属性的函数。
使用以下命令将字符串转换为日期复兴者功能:
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()
将它们转换回函数。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!