我有一个像这样的JSON字符串:
{"{\"nodeName\":\"abc\"}":[{"url":"abc","status":true},{"url":"abc","status":true}]," {\"nodeName\":\"pqr\"}":[{"url":"abc","status":true},{"url":"abc","status":true}]}
我能够使用以下查询代码获取值(v)但无法获取密钥(k)。在警报我得到(undefined abc true)。 k的值未定义。
$.each(obj, function() {
$.each(this, function(k, v) {
alert(k.nodeName +" "+ v.url +" "+v.status);
});
});
我需要(k)的值才能进一步验证。我已经验证了JSON字符串以确保它是有效的,所以我在这里缺少什么,或者还有其他方法吗?请帮忙......
另外,从服务器端我传递的json对象如下:
json.put(js.toString(),jsarray)
其中
json = json OBject,
js = json Object,
jsarray = json Array.
答案 0 :(得分:1)
键总是字符串。在这种情况下,它看起来像密钥包含JSON本身。您必须首先将JSON解析为对象。请参阅Parse JSON in JavaScript?。
但老实说,这是一个非常令人困惑的数据结构。最好将节点名称直接用作键,即您的JSON看起来像{"abc": [...], "pgr": [...], ...}
。
然后你会像这样访问数据:
$.each(obj, function(key, arr) {
$.each(arr, function(_, v) {
alert(key +" "+ v.url +" "+v.status);
});
});