simplejson没有在app引擎服务器上转义单引号

时间:2010-11-05 18:46:46

标签: javascript python simplejson

我正在尝试生成一个格式正确的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"\'"),是否有人有建议?我很茫然,已经花了很多时间试图弄明白......

2 个答案:

答案 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错误是别的。