COO*_*ANS 2 python json escaping special-characters
我正在为 REST 负载主体创建一个 json 主体,如下所示:
>>> j = json.loads('["foo", {"bar": ["to_be_replaced", 1.1, 1.0, 2]}]')
>>> text = "aaaa" + "\\" + "bbbbb" + "\\" + "cccc"
>>> j[1]["bar"][0] = text
>>> j
['foo', {'bar': ['aaaa\\bbbbb\\cccc', 1.1, 1.0, 2]}]
Run Code Online (Sandbox Code Playgroud)
烦人的是,另一边期望的格式是这样的
"aaaa\bbbb\cccc".
Run Code Online (Sandbox Code Playgroud)
我知道这是一个糟糕的主意。
我已经尝试了所有方法,并且开始相信根本不可能将这种格式的文本存储在 json 对象中。有办法吗?或者我是否需要让 Web 服务的开发人员选择一个更合理的分隔符。
我知道这实际上是一个反斜杠,如果我打印,就会得到一个反斜杠
>>> print(text)
aaaa\bbbbb\cccc
Run Code Online (Sandbox Code Playgroud)
但这并不能帮助我将其放入 json 对象中。
JSON 序列化器本质上应该只发出有效的 JSON。来自RFC 8259,强调我的:
7. 弦乐
字符串的表示形式与 C 系列编程语言中使用的约定类似。字符串以引号开头和结尾。所有 Unicode 字符都可以放在引号内,但必须转义的字符除外: 引号、反斜线和控制字符(U+0000 到 U+001F)。
任何字符都可以被转义。如果该字符位于基本多语言平面(U+0000 到 U+FFFF)中,则它可以表示为一个六字符序列:一个反斜线,后跟小写字母 u,再后跟四个编码该字符的十六进制数字。字符的代码点。十六进制字母 A 到 F 可以是大写或小写。 因此,例如,仅包含单个反斜线字符的字符串可以表示为“\u005C”。
或者,还有一些流行字符的两个字符序列转义表示。 因此,例如,仅包含单个反斜线字符的字符串可以更紧凑地表示为
"\\"。
请注意短语“必须转义”——“必须”是一个正式定义的术语;不符合 JSON 规范中的 MUST 要求的内容不允许将其自身称为 JSON。
总之:数据中仅包含文字反斜杠的字符串可以在 JSON 中编码为"\u005c", 或"\\"。它可能不会被编码为"\"(包括该字符作为未转义的文字)。
| 归档时间: |
|
| 查看次数: |
1881 次 |
| 最近记录: |