1

我有一个这样的 JSON 字符串:

{"{\"nodeName\":\"abc\"}":[{"url":"abc","status":true},{"url":"abc","status":true}],"      {\"nodeName\":\"pqr\"}":[{"url":"abc","status":true},{"url":"abc","status":true}]}

我能够使用下面的查询代码获取值(v),但无法获取键(k)。我收到警报(未定义的 abc 为真)。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.
4

1 回答 1

1

键总是字符串。在这种情况下,密钥本身似乎包含 JSON。您必须先将 JSON 解析为对象。请参阅在 JavaScript 中解析 JSON?.

但老实说,这是一个非常令人困惑的数据结构。最好直接使用节点名称作为键,即您的 JSON 看起来像{"abc": [...], "pgr": [...], ...}.

然后你会像这样访问数据:

$.each(obj, function(key, arr) {
    $.each(arr, function(_, v) {
        alert(key +" "+ v.url +" "+v.status);
    });
});
于 2013-06-18T09:05:36.260 回答