给定一串 JSON 数据,如何安全地将该字符串转换为 JavaScript 对象?
显然,我可以使用以下方法不安全地执行此操作:
var obj = eval("(" + json + ')');
但这让我容易受到包含其他代码的 JSON 字符串的影响,简单地 eval 似乎非常危险。
给定一串 JSON 数据,如何安全地将该字符串转换为 JavaScript 对象?
显然,我可以使用以下方法不安全地执行此操作:
var obj = eval("(" + json + ')');
但这让我容易受到包含其他代码的 JSON 字符串的影响,简单地 eval 似乎非常危险。
JSON.parse(jsonString)
只要你能保证一个相当现代的浏览器,它就是一种纯 JavaScript 方法。
jQuery 方法现已弃用。请改用此方法:
let jsonObject = JSON.parse(jsonString);
使用已弃用的 jQuery 功能的原始答案:
如果您使用 jQuery,请使用:
jQuery.parseJSON( jsonString );
这正是您要寻找的(请参阅 jQuery文档)。
此答案适用于 IE < 7,对于现代浏览器,请查看上面 Jonathan 的答案。
这个答案已经过时,乔纳森( JSON.parse(jsonString)
)上面的答案现在是最佳答案。
JSON.org有许多语言的 JSON 解析器,包括四种不同的 JavaScript 解析器。我相信大多数人会认为json2.js 是他们的 goto 实现。
使用“ JSON.parse() ”中的简单代码示例:
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
并扭转它:
var str = JSON.stringify(arr);
这似乎是问题:
通过 Ajax websocket 等接收的输入,它将采用字符串格式,但您需要知道它是否为JSON.parsable
. 问题是,如果你总是运行它JSON.parse
,程序可能会“成功”继续,但你仍然会在控制台中看到一个错误,带有可怕的"Error: unexpected token 'x'"
.
var data;
try {
data = JSON.parse(jqxhr.responseText);
} catch (_error) {}
data || (data = {
message: 'Server error, please retry'
});