2010-03-16 35 views
4

在寫一個Django應用程序,我回到上一個jQuery AJAX調用以下JSON:循環通過蟒蛇,字典改成的JSON在JavaScript

{ 
    "is_owner": "T", 
    "author": "me", 
    "overall": "the surfing lifestyle", 
    "score": "1", 
    "meanings": { 
     "0": "something", 
     "1": "something else", 
     "3": "yet something else", 
     "23": "something random" 
     }, 
    "user vote": "1" 
} 

在JavaScript/jQuery的回調函數,我可以輕鬆訪問is_owner,作者等。

is_owner = json.is_owner; 
author = json.author; 

但是對於含義而言,數字取決於它從服務器上拉出的內容而不同。在服務器端的含義的一部分,現在我在做什麼是構建一個字典,像這樣:

meanings_dict = {} 
meanings = requested_tayke.meanings.all() 
for meaning in meanings: 
    meanings_dict[meaning.location] = meaning.text 

,然後返回一個JSON我創造這樣的:

test_json = simplejson.dumps({'is_owner':is_owner, 'overall':overall, 'score':str(score),'user vote':str(user_vote), 'author': author, 'meanings' : meanings_dict }) 
print test_json 

return HttpResponse(test_json) 

我的問題是這個:如何從JavaScript中訪問我的json中的'含義'數據?我需要循環所有它。也許我需要以不同的方式將它加載到json中。我對服務器和客戶端都有完全的控制權,所以我願意改變它來使其工作。 另外值得注意的是:我沒有使用Django的序列化功能。我無法讓它適應我的情況。

回答

11

它的工作原理(大致)像一個字典在python中的工作方式:你可以迭代json對象中的鍵。

var meanings = json.meanings; 
for (var key in meanings) 
    var value = meanings[key]; 

如果您使用的添加元素爲對象的原型,所以出於防禦目的,建立了良好的做法是寫

for(var key in meanings) 
    if (meanings.hasOwnProperty(key)) 
     var value = meanings[key]; 
+4

這就是爲什麼我愛計算器一個頑皮的庫可能會破裂。 :) – Phil 2010-03-16 01:34:41