2010-05-03 23 views
0

我用django進行編程,我需要序列化一個對象到一個字符串,但我需要得到字符串/序列化。Simplejson轉儲char

一個例子:

simplejson.dumps({ 'ID': '根/葉'})

我需要這樣的輸出:

「{ 「ID」:「根/葉「}」

,但我得到這樣的:

'{ 」ID「: 」根葉\\\\「}'

比k你!

PD:對不起,我的英語:-P

回答

1

JSON要求字面\轉義,並表示爲\\。 Python也代表字面\字符轉義,如\\。在他們之間,\變成\\\\

注意在Python如下:

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

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

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

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

Python是打印額外逃逸。所以當你做simplejson.dumps({"id": "root\/leaf"})時,python會輸出正確的結果{'id': 'root\\/leaf'},但是有了額外的Python轉義,因此{'id': 'root\\\\/leaf'}。 Python將每個\\視爲單個字符。如果你寫入文件而不是字符串,你會得到{'id': 'root\\/leaf'}

編輯:我想補充,文字的JSON {"id": "root\/leaf"}將解碼爲{'id': 'root/leaf'},爲文本JSON \/映射到/字符。 \//均爲有效的/的JSON編碼;似乎沒有一種簡單的方法可以使簡單字符使用\/而不是/來編碼/