不一致的simplejson引号转换

时间:2012-06-14 21:24:23

标签: python cherrypy simplejson

我已经阅读了simplejson文档并且不明白为什么它有时会返回带有单引号的json对象(php无法理解),而其他时候会返回双引号的转义序列(在php中也无法识别) 。我可能在输出字符串上做正则表达式作为一个bandaid,但我宁愿理解问题的根源。

示例:

INPUT :( python中的起始数据)

print stories

{'text':'艾滋病毒/艾滋病有一天,\ r \ n然后我们带她回家,我们召集会议并告诉村民我们应该照顾她并给予她所需的良好照顾她离开前的一生。','id':1215L}

作为一个完整性检查 - 在cherrypy获取它之前,json对象看起来很正常

print simplejson.dumps( stories )

[{“text”:“青年赋予青少年权力... yada yada yada ......”,“id”:12828},{“text”:“women ... yada yada yada ......”, “id”:12828}]

...
import simplejson
return simplejson.dumps( stories )

[一些不起眼的魔法发生在樱桃......] 这是cherrypy中将json传递给浏览器的部分:

@cherrypy.expose
def browse_stories(self):
    stories = test_org_match.browse_org_story_matches()
    cherrypy.response.headers['Content-Type'] = 'application/json'
    return json.dumps( stories )

输出(我在浏览器中通过cherrypy调用此对象时看到的内容):

“[{\”text \“:\”POVERTY我们决定偷菜。我们无能为力。我们在没有食物的情况下住了两天,这些第三天我们跟不上。我们不得不吃东西或者我们会死。我们开始慢慢走向shamba,尽可能多地回家煮熟吃,我们感觉好多了。\“,\”id \“:33109},{\”text \“:\”Boda Bado他们只是在运输的基础上,人们可以使用bada-boda运输来节省时间\ r \ n它继电器帮助村里的农村人们使用摩托车自行车运送到另一只耳朵。 \“,\”id \“:35931}]”

(随附的文字不同,但这种情况发生在任何一个随机文字片段中)

注意:我相信simplejson返回带有单引号的对象的另一种情况是因为我传递了str(字典)而不是实际的字典。当然,当你提供单引号json时,php会中断。但是,“自由”的逃避令我感到困惑 - 我认为这种情况正在发生在我心里。

1 个答案:

答案 0 :(得分:2)

我明白了。我的代码使用json.dumps(),然后再次使用json.dumps - 所以额外的转义字符是json将其视为字符串而不是字典对象。