我正在尝试生成一个格式正确的json对象,以便在javascript中使用。我尝试过simplejson.dumps(string),但它在我的本地机器(在python shell中)与服务器(运行谷歌应用程序引擎)上的行为不同。例如,本地我会得到:
>>> s= {u'hello': u"Hi, i'm here"}
>>> simplejson.dumps(s)
'{"hello": "Hi, i\'m here"}'
一切看起来都不错。但是当我在服务器上运行它时,我得到了
{“你好”:“嗨,我在这里”}
单引号未转义,这会在我的javascript中引发错误。
没有辅助string.replace("'", r"\'")
,是否有人有建议?我很茫然,已经花了很多时间试图弄明白......
答案 0 :(得分:2)
我认为你被repr
行为与实际输出混淆了。
>>> s= {u'hello': u"Hi, i'm here"}
>>> simplejson.dumps(s)
'{"hello": "Hi, i\'m here"}'
>>> print simplejson.dumps(s)
{"hello": "Hi, i'm here"}
当您只是询问simplejson调用的结果时,Python shell会使用repr
打印该结果 - 它会将其转义,以便您可以在以后剪切并粘贴它。但是,dumps
生成的字符串实际上没有反斜杠。
答案 1 :(得分:1)
JSON中的单引号无需转义,实际上示例中返回的字符串中没有反斜杠:
>>> print simplejson.dumps(s)
{"hello": "Hi, i'm here"}
所以我怀疑你的javascript错误是别的。