Simplejson 转储 char \
我正在使用 Django 进行编程,需要将对象序列化为字符串,但我需要将字符串 \/
序列化。
一个例子:
simplejson.dumps({'id' : 'root\/leaf'})
我需要这样的输出:
{"id": "root\/leaf"}
但我得到这个:
{"id": "root\\\\\\\\leaf"}
I'm programming with Django need to serialize an object to a string, but I need to get the string \/
serialized.
An example:
simplejson.dumps({'id' : 'root\/leaf'})
I need an output like this:
{"id": "root\/leaf"}
But I get this:
{"id": "root\\\\\\\\leaf"}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
JSON 要求对文字
\
字符进行转义,并表示为\\
。 Python 还将转义的文字\
字符表示为\\
。在两者之间,\
变为\\\\
。请注意 Python 中的以下内容:
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 使用\/
而不是/
来编码/
。JSON requires that the literal
\
character be escaped, and represented as\\
. Python also represents the literal\
character escaped, as\\
. Between the two of them,\
becomes\\\\
.Notice the following in Python:
Python is printing the extra escape . So when you do
simplejson.dumps({"id": "root\/leaf"})
, python is printing the correct result{'id': 'root\\/leaf'}
, but with the extra Python escapes, hence{'id': 'root\\\\/leaf'}
. Python regards each\\
as a single character. If you write to a file instead of a string, you'll get{'id': 'root\\/leaf'}
.Edit: I might add, the literal JSON
{"id": "root\/leaf"}
would decode to{'id': 'root/leaf'}
, as the literal JSON\/
maps to the/
character. Both\/
and/
are valid JSON encodings of/
; there doesn't seem to be an easy way to make simplejson use\/
instead of/
to encode/
.