2012-06-25 60 views
1

是否可以將JSON的遍歷路徑存儲在超出第一個級別的變量中?使用字符串從jQuery AJAX遍歷JSON對象使用字符串

定義變量中的JSON遍歷路徑。

var jsonPathLink = 'sequenceId'; 
var jsonPathText = 'answer.body'; 

jQuery AJAX調用。 (我刪除了所有不必要的設置,但讓我知道如果你想包括任何代碼。)

$.ajax({ 
    success: function(data){ 
    if(data.length > 0){ 
     for(x in data){ 
     console.log(data[x][jsonPathLink]); // This works. 

     console.log(data[x][jsonPathText]); // This does not work. 
     console.log(data[x] + jsonPathText); // This also does not work. 
     } 
    } 
    } 
}); 
+0

您可以使用eval,但必須有更好的方法。 –

+0

您可能需要將它們解析出來,使用正則表達式應該是微不足道的。 – Tyrsius

回答

3

你可以寫一個traverseObject功能如下所示:

function traverseObj(obj, path) { 

    var arr = path.split('.'), 
     len = arr.length, 
     i = 0, 
     ret; 

    for (; i<len; i+=1) { 

     // on the first iteration, the passed object 
     // is cached in the ret-variable. 
     ret = !i 
      ? obj[arr[i]] 
      : ret[arr[i]]; 

    } 

    return ret; 

} 

單一的元素通過遍歷它們,路徑被應用於傳遞的obj。結果被緩存並返回。

示例:http://jsfiddle.net/k8GWz/

+0

超級小腳本...做了類似的,但不完全一樣,優化...認爲我可能需要包括數組遍歷以及。 例如myObj.anotehrObj.anArray [0] .something。完成後會發布! –