2010-03-16 63 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