2011-08-29 24 views
1

我有一个AJAX响应返回一个JSON对象。其中的字典值应该阅读:Python AJAX响应字符串文字

“图像\/JPEG”

但代替写着:

“图片\\/JPEG”

我已经通过了关于字符串文字的文档以及如何忽略转义序列,并且我试图用'r'作为字符串的前缀,但目前为止没有运气。

我的JSON编码字典看起来像这样:

response.append({ '姓名':i.pk, '尺寸':虚假, '类型': '图像/ JPEG' })

帮助将不胜感激!

+2

我很困惑。值应该是“image/jpeg”还是“image \/jpeg”? – codeape

+0

它应该是“image \/jpeg”。我使用一个Javascript库,它需要它以这种方式阅读。 – Oscar

+0

基本上\\是\的Python版本,因为\是字符串语法的一部分。我认为它应该在你写'image \\/jpeg'时起作用。也许你可以尝试urllib.quote?这对于替换网址中的字符很有用,但它仍然可能工作... – amito

回答

1

根据JSON spec\字符应该跳转为JSON中的\\

所以Python的JSON库是正确的:

>>> import json 
>>> json.dumps({"type": r"image\/jpeg", "size": False}) 
'{"type": "image\\\\/jpeg", "size": false}' 

当JSON解析/在浏览器中进行评价的type属性将具有正确的价值image\/jpeg

当然Python的JSON解析器处理逃逸,以及:

>>> print(json.loads(json.dumps({"type": r"image\/jpeg", "size": False}))["type"]) 
image\/jpeg 

我觉得很奇怪,你需要的JavaScript库,为看起来是用来标识资源的MIME值特定值类型。