2010-05-03 2 views
0

임 프로그래밍 django 및 문자열 개체를 serialize 할 필요가 있지만 문자열을 가져올 필요가/serialize 된.Simplejson 덤프 char

예 :

simplejson.dumps ({ 'ID': '루트/잎'})

내가 필요 같은 출력 :

'{ "ID": "루트/잎 "} '

하지만 난이 얻을 :

'{"ID ":"루트 \\\\ 잎 "} '

보다 너!

PD : 내 영어 - P

답변

1

JSON 죄송는 문자 \ 문자를 탈출하고, \\로 표현해야합니다. 파이썬은 \ 문자가 이스케이프 된 문자로 \\을 나타냅니다. 둘 사이에 \\\\\이됩니다.

주의 파이썬에서 다음

>>> "\\/" == "\/" 
True 

>>> {"id": "root\/leaf"} == {"id": "root\\/leaf"} 
True 

>>> {"id": "root\\/leaf"}["id"] 
'root\\/leaf' 

>>> print {"id": "root\\/leaf"}["id"] 
root\/leaf 

파이썬은 여분의 탈출을 인쇄한다. 따라서 simplejson.dumps({"id": "root\/leaf"})을 수행하면 파이썬은 올바른 결과 인 {'id': 'root\\/leaf'}을 인쇄하지만 여분의 파이썬 이스케이프는 따라서 {'id': 'root\\\\/leaf'}이됩니다. 파이썬은 각각 \\을 단일 문자로 간주합니다. 문자열 대신 파일에 쓰면 {'id': 'root\\/leaf'}이 표시됩니다.

편집 : 나는 추가 할 수 있습니다, 문자 그대로의 JSON {"id": "root\/leaf"} 리터럴 JSON으로, {'id': 'root/leaf'}/ 문자 \/지도를 해독한다. \//은 모두 유효한 JSON 인코딩 인 /입니다. simplejson을 / 대신 \/ 대신 /을 인코딩하는 쉬운 방법으로 보이지 않습니다.