如何正确解释作为字符串接收的JSON对象?

时间:2010-09-15 23:50:27

标签: javascript string json eval

我有一个破坏的网络服务,我无法访问和更改。它发送一些主要是好的JSON,但其中一个属性是一个嵌套的JSON对象,它以字符串形式发送。

http://www.ireland.com/api/getitemweb/185213
来自上面url的响应中的CustomJsonData就是一个例子。

我的问题是如何将CustomJsonData字符串解释为对象?

我认为'邪恶'eval()可能会这样做,但没有运气。

谢谢, 丹尼斯

3 个答案:

答案 0 :(得分:6)

如果您正在使用eval,则需要在eval:

之前向字符串添加(和)
var parsedObject = eval("(" + jsonString + ")");

然而,正如你所说,eval是邪恶的,使用jquery中的parseJson更好(并且不需要额外的parens):

var parsedObject = Jquery.parseJSON(jsonString);

jQuery parseJSON的文档:http://api.jquery.com/jQuery.parseJSON/

答案 1 :(得分:4)

使用Douglas Crockford的实施:https://github.com/douglascrockford/JSON-js/blob/master/json2.js

示例:

var obj = JSON.parse(aJsonString);

它处理嵌套数组,对象等。

答案 2 :(得分:0)

您必须解析数据两次 - 一次解析整个API JSON字符串,一次解析自定义JSON字符串。

function parseJSON(data) {
    return JSON ? JSON.parse(data) : eval('(' + data + ')');
}

var data = parseJSON(apiStr);
var custom = parseJSON(data.CustomJsonData);