2013-08-21 106 views
0

這裏有點困惑如何處理這個JSON對象。JQuery多維JSON對象

var data = { 
    "username": "Test", 
    "rating": "none", 
    "workers": { 
     "Test.DesktopHome2": { 
      "score": "2", 
      "alive": true 
     }, 
     "Test.M11x": { 
      "score": "4", 
      "alive": true 
     } 
    }, 
    "test2": "This is a Test" 
    } 

我可以訪問用戶名,等級,和TEST2領域就好了,但我對如何循環通過「工」使用JQuery有點爲難。我想在自己的表格行中顯示每個工人,其中工人名稱即「Test.DesktopHome2」作爲表格中的第一列,然後是分數,並且存活。 $ .each()功能喜歡引發錯誤。不知道如何在for循環中執行此操作,並能夠顯示鍵名稱。

此代碼將引發「意外令牌」錯誤。

var $UserData = jQuery.parseJSON(data); 
var $Workers = $UserData.workers; 
$.each($Workers function(i, item) { 
    //Do Stuff 
}); 
+0

任何原因,你沒有使用'數組'的工作對象'對象? – Jack

+0

你是什麼意思「$ .each()功能喜歡拋出一個錯誤」?我會認爲'每個()'應該是正確的方法。 –

+1

您的'$ .each()'在'$ Workers'後面缺少一個逗號。 –

回答

0

或者,使用$.each()

$.each(json.workers, function(index) { 
    $('#table').append('<tr><th>' + index + '</th><td>' + this.score + '</td></tr>'); 
}); 
0

workers是一個對象(使用{}),而不是一個數組(使用[])。

你可以循環像這樣:

for (var name in workers) { 
    console.log(name); // e.g "Test.DesktopHome2" 
    var worker = workers[name]; 
    console.log(worker.score); // e,g, "2" or "4" 
} 
0

使用for-in循環:

for (var key in obj.workers) { 
    console.log('Worker: ' + key + ' Score: ' + obj.workers[key].score + obj.workers[key].alive ? ' Alive' : ' Dead'); 
} 
+0

您錯過了代碼中的一部分。你應該做obj.workers [key] .score和obj.workers [key] .alive。但總的想法是正確的。 – legacybass

+0

@legacybass Thx,修復它。 – Barmar