【发布时间】:2012-05-25 19:07:49
【问题描述】:
我遇到了一个关于 JSON 和 Django 的有趣问题。我想我已经把它缩小到这个问题了。问题是我有一个类似这样的 JSON 对象:
{"embed": "<iframe width='640' height='360' src='http://www.youtube.com/embed/Sw5Gk1L4LQE?wmode=opaque' frameborder='0' allowfullscreen></iframe>"}
在 PDB 中,如果我将其打印为 simplejson.dumps,我会得到这个(注意双引号):
{"embed": "<iframe width=\\"640\\" height=\\"360\\" src=\\"http://www.youtube.com/embed/Sw5Gk1L4LQE?wmode=opaque\\" frameborder=\\"0\\" allowfullscreen></iframe>"}
实际的 HttpResponse 对象已经从每组这样的双重转义中删除了一个斜杠。
return HttpResponse(simplejson.dumps(result), 'application/json'
{"embed": "<iframe width=\"640\" height=\"360\" src=\"http://www.youtube.com/embed/Sw5Gk1L4LQE?wmode=opaque\" frameborder=\"0\" allowfullscreen></iframe>"}
在客户端上,我使用的是 jQuery 的 parseJSON,但我遇到了具有单个转义字符(第 3 个)的问题,因为它没有将它们视为转义。但它是实际有效的 JSON,当我直接在控制台中尝试 parseJSON 时,第二个有效,但它实际上不是有效的 JSON(根据 JSONLint.com)。
关于如何将这个 JSON 对象从 Django 获取到客户端并保持嵌入代码完整的任何想法?我希望这对我来说是一个小的过度网站。
【问题讨论】:
-
显示使用 parseJSON 的代码。响应中
embed属性的值不是 json。它是一个字符串。您是否有可能尝试将其解析为 json?以我的经验,使用像 Fiddler2 这样的工具来检查在线上发送和接收的消息是非常宝贵的。 dinochiesa.net/?p=93 -
感谢您的建议,但我做错了几件事,最终导致非常混乱的错误和调试。我相信我已经清除了所有内容,您可以在下面的新消息中看到这一点。