2013-04-11 87 views
0

我已經收集了JSON響應之前,但這個特定的一個我不能從任何我使用的策略得到的對象!JSON不會解析

我的JSON:

{nodes: [{title:"test" }, { title:"test2" }, {

title:"test3" }, {

title:"test4" }]};

我的JS:

$.post('http://mysite.com/some.php', data, function (data) { 


    for (var i=0, len=data.length; i < len; i++) { 


     console.log(data.nodes[i].title); 


}; 

});

我得到整個數據作爲JSON和工作正常,但我不能得到解析對象內工作,我應該如何制定它?我已經嘗試使用「FOR」以及代替「每個」

+1

可能重複的[我有一個嵌套的數據結構/ JSON,我如何訪問特定的值?](http://stackoverflow.com/questions/11922383/i-have-a-nested-data-structure- json-how-can-i-access-a-specific-value) –

回答

1

這些數字鍵建議的節點容器應該是一個陣列,而不是一個對象

+0

是的,這個問題已得到解決 - 你指出這真是太棒了! :) 但是我仍然遇到和以前一樣的問題:/ – MDDY

0

我同意@KaeVerens,這是(或者是)結構嚴謹的JSON。除了不是數組的數組之外,還有一個額外級別的對象,您看起來並不需要。如果您正在生成的JSON,它將使很多更有意義,如果它是這個:

{ 
    "nodes": [ 
     { "title": "test", "field2": "test2" }, 
     { "title": "test3", "field2": "test4" } 
    ] 
} 

OK,現在你的JSON數據看起來更像此更新。但是現在你發佈的內容並不是有效的JSON!它是一個可以在控制檯或測試代碼中工作的JavaScript對象,但它不會通過JSON validator。房產名稱沒有被引用,因爲它們應該是最後的;。它應該看起來像:

{ 
    "nodes": [ 
     { "title": "test" }, 
     { "title": "test2" }, 
     { "title": "test3" }, 
     { "title": "test4" } 
    ] 
} 

(間距和縮進並不重要,我只是格式化它這種方式清晰。)

無論如何,與固定,此代碼對當前數據罰款:

$.each(data.nodes, function(index, node) {  
    console.log(node.title); 
}); 

如果你檢查實際nodes數組的長度,而不是檢查data.lengthfor循環會正常工作不存在:

var nodes = data.nodes; 
for(var i = 0, len = nodes.length; i < len; i++) { 
    var node = nodes[i]; 
    console.log(node.title); 
} 

我建議引用嵌入的對象,因爲此代碼(nodesnode變量)而不是像data.nodes[i]之類的東西。更容易跟蹤,也可以更高效(雖然在這種簡單情況下它不會有任何不同)。

+0

謝謝你的迴應! 事情是我可以到達「節點」,但我只是得到「TypeError:'undefined'不是一個對象」。所以我可以在技術上達到它,但它說它是錯誤的對象/數組。我使用:console.log(data.nodes);但它給了我錯誤@MichaelGeary – MDDY

+0

行,更新爲您的最新... –