2014-07-16 38 views
0

我有一個JSON通過提供路徑搜索JSON字符串

情況1示出以下

var json = { 
     "name": "Soft Drinks", 
     "T2": [ 
      { 
       "name": "Bottled", 
       "T3": [ 
        { 
         "name": "Apple", 
         "leaf": [ 
          { 
           "name": "Apple 500 ML" 
          }, 
          { 
           "name": "Apple 1 Ltr" 
          } 
         ] 
        } 
       ] 
      }, 
      { 
       "name": "Fountain", 
       "T3": [ 
        { 
         "name": "Apple", 
         "leaf": [ 
          { 
           "name": "Apple Regular, 500 ML" 
          } 
         ] 
        } 
       ] 
      }, 
      { 
       "name": "Tin", 
       "T3": [ 
        { 
         "name": "Apple", 
         "leaf": [ 
          { 
           "name": "Apple Regular, 300 ML" 
          } 
         ] 
        } 
       ] 
      } 
     ] 
    } 

我想查詢的JSON:

例如,如果我提供路徑爲

var patharray = ["Soft Drinks","Bottled"] ; //(Bottled doesn't have leaf) 

我需要的輸出是Apple

情況2:

例如,如果我提供作爲

var patharray = ["Soft Drinks","Bottled","Apple"] ; //(Apple has got leaf) 

我所需要的輸出的路徑是

"leaf": [ 
          { 
           "name": "Apple 500 ML" 
          }, 
          { 
           "name": "Apple 1 Ltr" 
          } 
         ] 

我嘗試使用以下的方法,但現在它不起作用。

function findElement(obj, patharray, index) { 
    var res = ''; 
    if(index < patharray.length) { 
     var searchStr = patharray[index]; 
     index++; 
     for(each in obj) { 
      if(obj[each] instanceof Array) { 
       var found = false; 
       for(var i=0;i<obj[each].length;i++) { 
        if(obj[each][i].name == searchStr) { 
         res = obj[each][i]; 
         if(index<patharray.length) { 
          console.log('search again') 
          res = findElement(obj[each][i], patharray, index); 
         } 
         found = true 
         break; 
        } 
       } 
       if(found) { 
        break; 
       } 
      } 
     } 
     return res 
    } 
} 
var patharray = ["Ice creams","Stick","Frosty"] ; 

console.log(findElement(json, patharray, 0)); 
+1

有可能是一個庫這一點。 – Piwwoli

+0

可否請您告訴圖書館名稱。 – user974802

回答