0

我正在使用 Django 进行编程,需要将对象序列化为字符串,但我需要将字符串\/序列化。

一个例子:

simplejson.dumps({'id' : 'root\/leaf'})

我需要这样的输出:

{"id": "root\/leaf"}

但我明白了:

{"id": "root\\\\\\\\leaf"}
4

1 回答 1

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 正在打印额外的 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 使用\/而不是/进行编码/

于 2010-05-03T22:56:09.973 回答