Как избежать синтаксиса Unicode (U'Foo ') в строке JSON? - PullRequest
1 голос
/ 28 февраля 2011

Я передаю строку JSON с сервера в шаблон Django. Когда я назначаю строку JSON для переменной jQuery, я получаю синтаксис Unicode.

Py:

# Call Facebook Graph API to get list of Friends.
result = facebook.GraphAPI(
            user.access_token).get_connections('me', 'friends')
friends = result["data"]  

Шаблон jQuery / Django:

var friends = {{friends}};

Проверка задания в Firebug:

[
      {
         u'name': u'Joe Smith',
         u'id': u'6500000'
      },
      {
         u'name': u'Andrew Smith',
         u'id': u'82000'
      },
      {
         u'name': u'Dora Smith',
         u'id': u'97000000'
      }
]

Ответы [ 3 ]

4 голосов
/ 28 февраля 2011

Вам необходимо преобразовать friends в JSON на стороне сервера.Вы видите представление Python, которое иногда выглядит как JSON, но это не так.

2 голосов
/ 02 марта 2011

Как указывает Брайан Голдман, переменная friends - это не строка JSON, как вы говорите, а объект Python, который выглядит достаточно похожим на JSON, когда выдается на печать, иногда.

Вам нужно преобразовать его в правильный JSON перед передачей в шаблон.В верхней части вашего views.py поместите эту строку

from django.utils import simplejson

и затем передайте simplejson.dumps(friends) в шаблон, а не просто friends.

Что бы вы ни делали, просто делайтене пытайтесь создать JSON вручную в шаблоне :) Если вы не полностью контролируете исходные данные (и не делаете этого; в данном случае это происходит из Facebook), у вас не будет никаких проблем с вашим шаблоном.

1 голос
/ 28 февраля 2011

Когда python представляет строку, например, u'123', тогда это означает, что строка является юникодом, не было бы никакого реального преимущества в том, чтобы избежать или удалить ее, она по-прежнему ведет себя как обычная строка

...