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 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.
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 に答える