2012-03-15 7 views
5

は、jQueryの中に私の応答コードです:事前にプロパティ名が不明な場合にJSONデータを解析するにはどうすればよいですか?ここ

var response = $.parseJSON(response); 

for (var i = 0; i < response.groupIds.length; i++) { 
    console.log(response.groupIds[i], i); 
} 

response.groupIds[i]フォーム{"unknown name":"unknown value"}です。

私はJavaScriptのこれらのデータの両方にアクセスしたいと思います。 unknown nameは?

答えて

12

Object.keysを使用して、キー名の完全なリスト(配列)を取得します。ポリフィルはhereです。

var group = response.groupIds[i]; 

var allPropertyNames = Object.keys(group); 
for (var j=0; j<allPropertyNames.length; j++) { 
    var name = allPropertyNames[j]; 
    var value = group[name]; 
    // Do something 
} 

質問の応答形式には、1つのキーと値のペアのみが含まれています。あなたがリストに興味を持っていない場合は、hasOwnPropertyfor-i-inループを使用

var group = response.groupIds[i]; 
var name = Object.keys(group)[0]; // Get the first item of the list; = key name 
var value = group[name]; 

:コードは、その後に減少させることができます。プロトタイプから継承するプロパティを除外するには、最後のメソッドを使用する必要があります。

for (var name in group) { 
    if (group.hasOwnProperty(name)) { 
     var value = group[name]; 
     // Do something 
    } 
} 
+0

Robありがとうございますが、私の上記のコードでObjectは何ですか?応答? –

+0

ああ、ありがとう、ありがとう。 –

3

for..inループを使用します。オブジェクトの唯一のプロパティがありますので

for(x in response.groupIds[i]) { 
    // x is now your unknown key 
    // response.groupIds[i][x] is the unknown value 
} 

を、それがうまく動作します。

+0

これを試してみると、私は定義されていないと言いますか? –

+0

最初の 'for'ループで定義していませんか? –

関連する問題