我有一个破坏的网络服务,我无法访问和更改。它发送一些主要是好的JSON,但其中一个属性是一个嵌套的JSON对象,它以字符串形式发送。
http://www.ireland.com/api/getitemweb/185213
来自上面url的响应中的CustomJsonData就是一个例子。
我的问题是如何将CustomJsonData字符串解释为对象?
我认为'邪恶'eval()可能会这样做,但没有运气。
谢谢, 丹尼斯
答案 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);