Цикл Python-словарь-превращен в-JSON в JavaScript - PullRequest
4 голосов
/ 16 марта 2010

При написании приложения django я возвращаю следующий json при вызове jQuery ajax:

{
    "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, author и т. Д.

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)

У меня такой вопрос: как мне получить доступ к «значениям» данных из моего json в javascript? Мне нужно пройтись по всему циклу. Может быть, мне нужно загрузить его в JSON по-другому. Я полностью контролирую как серверную, так и клиентскую стороны, поэтому я готов изменить любой из них, чтобы он работал. Также стоит отметить: я не использую функциональность сериализации Django. Я не мог заставить это работать с моей ситуацией.

1 Ответ

11 голосов
/ 16 марта 2010

это работает (примерно) так же, как работает dict в 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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...