我正在使用Django编程,需要将对象序列化为字符串,但我需要序列化字符串\/。
举个例子:
simplejson.dumps({'id' : 'root\/leaf'})我需要这样的输出:
{"id": "root\/leaf"}但我明白了:
{"id": "root\\\\\\\\leaf"}发布于 2010-05-03 22:56:09
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'},但是使用额外的{'id': 'root\\/leaf'}转义,因此是{'id': 'root\\\\/leaf'}。Python将每个\\视为单个字符。如果您写入一个文件,而不是一个字符串,您将得到{'id': 'root\\/leaf'}。
编辑:我可以添加,文字JSON {"id": "root\/leaf"}将解码为{'id': 'root/leaf'},因为文字JSON \/映射到/字符。\/和/都是/的有效JSON编码;使simplejson使用\/而不是/来编码/似乎并不容易。
https://stackoverflow.com/questions/2761122
复制相似问题