在javascript中通过python-dictionary-turned-into-json循环

Phi*_*hil 4 javascript django jquery json

在编写一个django应用程序时,我在jQuery ajax调用上返回以下json:

{
    "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"
}
Run Code Online (Sandbox Code Playgroud)

在javascript/jQuery回调函数中,我可以轻松地访问is_owner,author等.

is_owner = json.is_owner;
author = json.author;
Run Code Online (Sandbox Code Playgroud)

但是对于意义,数字是不同的,取决于它从服务器拉出的内容.在服务器端的意义部分,现在我正在做的是构建一个像这样的字典:

meanings_dict = {}
meanings = requested_tayke.meanings.all()
for meaning in meanings:
    meanings_dict[meaning.location] = meaning.text
Run Code Online (Sandbox Code Playgroud)

然后返回一个我创建的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)
Run Code Online (Sandbox Code Playgroud)

我的问题是: 如何在javascript中从我的json访问"含义"数据? 我需要遍历所有这些.也许我需要以不同的方式将它加载到json中.我完全控制服务器和客户端,所以我愿意改变它以使其工作. 另外值得注意的是:我没有使用Django的序列化功能.我不能让它适应我的情况.

Jim*_*mmy 11

它(大致)像在python中的dict一样工作:你可以遍历json对象中的键.

var meanings = json.meanings;
for (var key in meanings )
    var value = meanings[key]; 
Run Code Online (Sandbox Code Playgroud)

如果你使用一个将元素添加到对象原型的顽皮库,它可能会破坏,所以出于防御目的,已建立的良好实践是写

for(var key in meanings)
    if (meanings.hasOwnProperty(key))
        var value = meanings[key];
Run Code Online (Sandbox Code Playgroud)

  • 这就是我喜欢stackoverflow的原因.:) (4认同)