0

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 获取到客户端并保持嵌入代码完整的任何想法?我希望这对我来说是一个小的oversite。

4

1 回答 1

0

好吧,一个小时后,我终于意识到我在这方面犯了几个小错误,导致大多数事情都崩溃了。我在本地加载页面,而不是通过 Django 提供它(只是为了测试我正在做的 jQuery Mobile 的东西)。

在该本地文件中,我复制/粘贴了 Django 中 JSON 视图的输出。

我尝试对该视图使用 JSONP 调用,并且由于 jQuery JSONCallback 它引发了错误。

最后,测试这个的正确方法是通过 Django 提供 HTML,这样我就不必使用 JSONP,当我这样做时,parseJSON 接受了具有单转义双引号 \" 的 JSON,因为它应该不会从复制和粘贴中接受,因为这不是响应对象。

希望我的错误将来能帮助其他人。

于 2012-05-25T20:08:00.093 回答