2016-04-08 13 views
-5
私は、次の Json応答を取得

Javascript角括弧内のJsonレスポンスを解析するにはどうすればよいですか?

"kind": "analytics#gaData", 
"id": "c", 
"rows": [ 
    [ 
     "/de/cart.aspx", 
     "0" 
    ], 
    [ 
     "/de/cart_details.aspx", 
     "0" 
    ], 
    [ 
     "/de/cart_login.aspx", 
     "0" 
    ], 
    [ 
     "/de/order_summary.aspx", 
     "0" 
    ], 
    [ 
     "/fr/cart.aspx", 
     "0" 
    ], 
    [ 
     "/fr/cart_details.aspx", 
     "0" 
    ], 
    [ 
     "/fr/cart_login.aspx", 
     "0" 
    ], 
    [ 
     "/fr/order_summary.aspx", 
     "0" 
    ], 
    [ 
     "/it/cart.aspx", 
     "0" 
    ], 
    [ 
     "/it/cart_details.aspx", 
     "0" 
    ], 
    [ 
     "/it/cart_login.aspx", 
     "0" 
    ], 
    [ 
     "/it/order_summary.aspx", 
     "0" 
    ] 
    ] 

を、どのように私はおそらくために、この配列をループがそのデータを取得することができますか(?)?

答えて

2

他の配列を走査するのと同じです。単に、マップ内のプロパティ名の下にプロパティを格納する代わりに、この配列を構成するオブジェクトは、配列内の指定されたインデックスの下にプロパティを格納します。

theJsonObject.rows.forEach(function(row) { 
    var url = row[0]; 
    var n = row[1]; 
    do stuff with url and n... 
}); 

forEachは、特定の状況に適したものに置き換えることができます。たとえば、名前付きプロパティを持つ通常のオブジェクトの配列に変換する場合:

var withNamedProperties = theJsonObject.rows.map(function(row) { 
    return { 
     url:row[0], 
     n:row[1] 
    }; 
}); 
+0

ありがとう、最初の方法で私はエラーが表示されます:プロパティの '行'を読み取ることができません未定義(...)、私のJsonには2つのキーも含まれています。 "行"だけでなく、これに関連していますか? (私は私の答えでjsonを編集しました) – Signo

+0

これは、私が 'theJsonObject'という名前の変数はあなたが私達に示している値を保持していないことを意味します。これは '未定義 'なので、' rows'プロパティを保持することはできません。最善のケースでは、コードのどこかでスペルミスがある可能性があります。最悪の場合、上流のデータフローに問題があります。あなたはAndroid/iOSの人のようですので、JSは、ランタイムの前にスペルミスが気付かれないので、静的な言語に慣れていた人に不快感を与えることがあります。あなたはいつもjshintのようなリンターを走らせる方が良いと感じるでしょう。 :) –

+0

そうです! :Dあなたの提案のおかげで:) Btwそれはタイプミスではない、私は私のJson構造に問題があると思うが、私は何とかそれを修正するよ、もう一度感謝:) – Signo

関連する問題