2016-03-18 4 views
0

私はapi呼び出しによって返されたいくつかのネストされたjsonを解析しようとしています。以下は返されているものの簡略化されたバージョンです。javascript parse動的変数を持つ入れ子json

{ 
    "Includes":{ 
    "Products":{ 
     "P123456":{ 
     "Brand":{}, 
     "Description":"ipsem lorem", 
     "Statistics": 
      [ 
      "Author":"John Smith", 
      "IsFeatured":false, 
      "Total": 3 
      ] 
     } 
    } 
    } 
} 

私は私が必要なものを得るために、いくつかの異なる構文を試してみたところPRODUCT_CODE =「P123456」私も使ってみました

data.Includes.Products.product_code.Statistics 
data.Includes.Products[product_code].Statistics 

無駄にと「のeval」「を取得します」。エラーレスポンスは常に同じです

application.js:1639 Uncaught TypeError: Cannot read property 'Statistics' of undefined 

私はコンソールにログオンしているので、正しい製品コードを知っています。私も正常にconsole.logged

data.Includes.Products["P123456"].Statistics 

私は、製品コード "P123456"でネストされたデータにアクセスできますか?プロジェクトではjeptoを使用し、jQueryは使用しません。有効なデータ構造で

答えて

0

Object.keys(data.Includes.Products)は、製品の下にあるキー配列を返します。

初めての場合はObject.keys(data.Includes.Products)[0]です。

統計は

var key = Object.keys(data.Includes.Products); 
var statistics = data.Includes.Products[key].Statistics; 

ピュアJavaScriptが...ないライブラリ取得することができます。

PS。 JSONの形式が正しくありません。その "統計"配列は涙を引き起こすでしょう。

+0

これはうまくいきました。ありがとうございます。他の答えのどれも、私が返されるデータを制御できないことに注意しているようです。私は$ .getJSONと$ .ajaxを使って試しました。私はjsとjsonで未経験で、jsonがどのように不正な形で記述されているか気になりますか?なぜ私の質問が落ちたのか分かりません。 – margo

+0

うれしい私は助けることができます。 Array []へのあなたの "Statistics"キーポイントは別のオブジェクト{}でなければなりません。 @Nina Scholzは正しいJSONを答えています。あなたは下線について確信していません:( – Wainage

+0

BTW。正しい答えとしてこれをタグ付けすることができます。私は新しいので、回答者の外にコメントすることができます。 – Wainage

1

、あなたは

object.Includes.Products.P123456 

または

object.Includes.Products[product_code] 

var object = { 
 
     "Includes": { 
 
      "Products": { 
 
       "P123456": { 
 
        "Brand": {}, 
 
        "Description": "ipsem lorem", 
 
        "Statistics": { // its an object, not an array 
 
         "Author": "John Smith", 
 
         "IsFeatured": false, 
 
         "Total": 3 
 
        } 
 
       } 
 
      } 
 
     } 
 
    }, 
 
    product_code = 'P123456'; 
 

 
document.write('<pre>' + JSON.stringify(object.Includes.Products.P123456, 0, 4) + '</pre>'); 
 
document.write('<pre>' + JSON.stringify(object.Includes.Products[product_code], 0, 4) + '</pre>');

0

経由でアクセスすることができ、あなたはすでにこれを試みましたか? data.Includes.Products.P123456.Statistics?これはプロパティのように見え、インデックス付きの文字列ではありません。

関連する問題