2017-03-07 274 views
-2

我有下面的JSON字符串。不幸的是,文件中的id-dashes不是可選的,語法也不是。我想用JavaScript/Node提取「dd」值。從JSON中提取值

{ 
    "a-id":{ 
     "b-id":"random", 
     "bb-id":"random", 
     "bbb-id":"random", 
     "bbbb-id":{ 
     "c":[ 
      { 
       "d":"random", 
       "dd":"This_info_is_needed" 
      }, 
      { 
       "d":"random", 
       "dd":"This_info_is_needed" 
      }, 
      { 
       "d":"random", 
       "dd":"This_info_is_needed" 
      }, 
      { 
       "d":"random", 
       "dd":"This_info_is_needed_2" 
      } 
     ] 
     }, 
     "bbbbb-id":"random", 
     "bbbbbb-id":"random" 
    } 
} 

我將開放使用任何附加的輔助等lodash,jQuery的等

輸出應該以與陣列:This_info_is_needed和This_info_is_needed_2。

預先感謝您。

+1

你想要什麼樣的out輸出?它會是什麼樣子? – Josh

+0

這並不重要。最後,擁有一個具有唯一鍵值「dd」的數組將非常棒。 – AppRoyale

回答

1

您可以創建自定義函數,使用for...in循環可以深入搜索數據並返回值,如果密鑰爲dd

var obj = {"a-id":{"b-id":"random","bb-id":"random","bbb-id":"random","bbbb-id":{"c":[{"d":"random","dd":"This_info_is_needed"},{"d":"random","dd":"This_info_is_needed"},{"d":"random","dd":"This_info_is_needed"},{"d":"random","dd":"This_info_is_needed"}]},"bbbbb-id":"random","bbbbbb-id":"random"}} 
 

 
function getDD(data) { 
 
    var result = [] 
 
    for(var i in data) { 
 
    if(i == 'dd') result.push(data[i]) 
 
    if(typeof data[i] == 'object') result.push(...getDD(data[i])) 
 
    } 
 
    return result 
 
} 
 

 
console.log(getDD(obj))

0

如果你只,也只是這樣做只是感興趣的值:

var obj = {"a-id":{"b-id":"random","bb-id":"random","bbb-id":"random","bbbb-id":{"c":[{"d":"random","dd":"This_info_is_needed"},{"d":"random","dd":"This_info_is_needed"},{"d":"random","dd":"This_info_is_needed"},{"d":"random","dd":"This_info_is_needed"}]},"bbbbb-id":"random","bbbbbb-id":"random"}}; 
 

 
var desiredResults = obj['a-id']['bbbb-id']['c'].map(function(data){return data.dd}); 
 

 
console.log(desiredResults);