2016-07-07 4 views
0

次のレスポンスの値を取得する必要があります。私は値"Network problem"を持っている場合はJavaScriptのレスポンスで異なるデータを分離する

var response = { "data": [ 

    { 
     "value": "Network problem", 
     "text": "Network problem", 
     "areas": [ 
     { 
      "value": "Congestion", 
      "text": "Congestion", 
      "sub_areas": [ 
      { 
       "value": "Congestion_1", 
       "text": "Congestion_1", 
       "id":"1" 
      }, 
      { 
       "value": "Call D", 
       "text": "Call D", 
       "id":"2" 
      }] 
     }, 
     { 
      "value": "Drop", 
      "text": "Drop", 
      "sub_areas": [ 
      { 
       "value": "Drop_1", 
       "text": "Drop_1", 
       "id":"3" 
      }] 
     } 
     ]}; 

は、その後、私は、そのエリア(ex: areas = ["Congestion","Drop"])を取得する必要があります。次に、面積値を使用してサブエリアを再検索する必要があります。面積値が"congestion"の場合、sub_areas =["congestion_1", "Call D"])。どうすればいいですか

+0

このjsonオブジェクトを「平坦化」してから、必要な 'value'を得ることができます。 – Venky

+0

@Venky例を挙げてください – madhev

+1

http://stackoverflow.com/questions/6890969/how-to-navigate-in-nested-json – Venky

答えて

1

Venkyが提案したように、アンダースコアなどのライブラリを使用するのがおそらく最善の方法です。

ネイティブJSソリューションについて興味がある場合は、以下で紹介します。

あなたの構造は、インブリケーションの多くのレベルを持っていないので、次のような単純なアプローチを使用することを検討することができます

var node, root = {}; 

response.data.forEach(function(data) { 
    node = root[data.value] = {}; 

    data.areas.forEach(function(area) { 
    node[area.value] = []; 

    area.sub_areas.forEach(function(subArea) { 
     node[area.value].push(subArea.value); 
    }); 
    }); 
}); 

出力例#1:「データ」の値のリスト:

console.log(Object.keys(root)); 
["Network problem"] 

出力例#2:

console.log(Object.keys(root['Network problem'])); 
["Congestion", "Drop"] 

出力例#3: 'ネットワークの問題' の領域のリストリーフノードが配列されている間、ルートノードとその直下の子は、オブジェクトであること

console.log(root['Network problem']['Congestion']); 
["Congestion_1", "Call D"] 

注:「ネットワークの問題」/「輻輳」のサブエリアのリスト。したがって、最後の例の構文が異なります。以下は

付録

固定フォーマットで、私が使用したレスポンスオブジェクトです。

var response = { 
    "data": [ 
    { 
     "value": "Network problem", 
     "text": "Network problem", 
     "areas": [ 
     { 
      "value": "Congestion", 
      "text": "Congestion", 
      "sub_areas": [ 
      { 
       "value": "Congestion_1", 
       "text": "Congestion_1", 
       "id":"1" 
      }, 
      { 
       "value": "Call D", 
       "text": "Call D", 
       "id":"2" 
      } 
      ] 
     }, 
     { 
      "value": "Drop", 
      "text": "Drop", 
      "sub_areas": [ 
      { 
       "value": "Drop_1", 
       "text": "Drop_1", 
       "id":"3" 
      } 
      ] 
     } 
     ] 
    } 
    ] 
}; 
関連する問題