JSON呈现未找到的密钥数据

时间:2013-06-18 08:47:53

标签: javascript json

我有一个像这样的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.

1 个答案:

答案 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);
    });
});