如何在JSON字符串中转义unicode语法(u'foo')?

时间:2011-02-28 17:02:29

标签: jquery python json unicode

我将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 个答案:

答案 0 :(得分:4)

您需要在服务器端将friends转换为JSON。您正在看到Python表示,有时候看起来像JSON,但不是。

答案 1 :(得分:2)

正如Brian Goldman所指出的那样,friends变量不是JSON字符串,就像你说的那样,而是一个Python对象,有时看起来就像JSON一样打印出来以传递给它。

在将其传递给模板之前,您需要将其转换为正确的JSON。在views.py的顶部,放置此行

from django.utils import simplejson

然后将simplejson.dumps(friends)传递给模板,而不仅仅是friends

无论你做什么,只是不要试图在模板中手工构建JSON :)如果你没有完全控制源数据(你没有;在这种情况下,它来自Facebook)你会你的模板没有麻烦。

答案 2 :(得分:1)

当python表示一个字符串,例如u'123',那么它意味着该字符串是unicode,没有真正的优势来逃避它或删除它,它仍然表现得像一个普通的字符串