我正在使用 Django 进行编程,需要将对象序列化为字符串,但我需要将字符串\/
序列化。
一个例子:
simplejson.dumps({'id' : 'root\/leaf'})
我需要这样的输出:
{"id": "root\/leaf"}
但我明白了:
{"id": "root\\\\\\\\leaf"}
我正在使用 Django 进行编程,需要将对象序列化为字符串,但我需要将字符串\/
序列化。
一个例子:
simplejson.dumps({'id' : 'root\/leaf'})
我需要这样的输出:
{"id": "root\/leaf"}
但我明白了:
{"id": "root\\\\\\\\leaf"}
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 正在打印额外的 escape 。因此,当您这样做时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 编码/
。似乎没有一种简单的方法可以让 simplejson 使用\/
而不是/
进行编码/
。