2011-08-29 4 views
1

JSON 개체를 반환하는 AJAX 응답이 있습니다. 사전 값 중 하나를 읽을 것으로 예상되는 :Python AJAX 응답 문자열 리터럴

"이미지 \/JPEG"

을하지만 그 대신에 읽 내가 겪었어요

"이미지 \\/JPEG"

을 문자열 리터럴에 대한 문서 및 이스케이프 시퀀스를 무시하는 방법에 대해 알아 보았습니다. 문자열에 'r'을 접두어로 붙이려고했지만 행운이 없습니다.

내 JSON 인코딩 된 사전은 다음과 같습니다

response.append ({ '이름'i.pk, '크기': 거짓, '유형': '이미지/JPEG' })

도움을 주시면 대단히 감사하겠습니다.

+2

나는 혼란 스럽다. 값을 "image/jpeg"또는 "image \/jpeg"여야합니까? – codeape

+0

"image \/jpeg"여야합니다. 나는 그것을 읽는 것을 요구하는 Javascript 라이브러리를 사용한다. – Oscar

+0

기본적으로 \\는 \ as \의 Python 버전이며 문자열 구문의 일부입니다. 나는 당신이 'image \\/jpeg'라고 쓸 때 작동 할 것이라고 생각한다. 어쩌면 당신은 urllib를 시도 할 수 있습니다. 인용구? 그것은 URL의 문자를 대체하는 데 유용하지만 여전히 작동 할 수 있습니다 ... – amito

답변

1

JSON spec에 따르면 \ 문자는 JSON에서 \\으로 이스케이프되어야합니다.

그래서 파이썬 JSON 라이브러리는 올바른 :

json으로 구문 분석
>>> import json 
>>> json.dumps({"type": r"image\/jpeg", "size": False}) 
'{"type": "image\\\\/jpeg", "size": false}' 

/브라우저에서 평가의 type 속성이 올바른 값 image\/jpeg있을 것이다. 물론

파이썬 JSON 파서는 물론 이스케이프 처리합니다

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

나는 그것이 매우 이상한 찾을 당신이 필요합니다 자바 스크립트 라이브러리가이 자원의 마임을 식별하는 데 사용되는 것처럼 보이는 값에 대한 특정 값 유형.