Python 是否保证以JSON转义换行
我想要一个换行符分隔的JSON记录文件。所以记录中的换行必须转义 我的python测试字符串确实被转义了。但它是否能在所有JSON实现(如Java)中得到保证 字符串是由零个或多个Unicode字符组成的序列,用 双引号,使用反斜杠转义。字符表示为单个字符串。字符串非常类似于C或Java字符串Python 是否保证以JSON转义换行,python,json,Python,Json,我想要一个换行符分隔的JSON记录文件。所以记录中的换行必须转义 我的python测试字符串确实被转义了。但它是否能在所有JSON实现(如Java)中得到保证 字符串是由零个或多个Unicode字符组成的序列,用 双引号,使用反斜杠转义。字符表示为单个字符串。字符串非常类似于C或Java字符串 因此,是的,它们在所有符合标准的实现中都被转义。如果字符串被正确转义,那么只要实现符合标准,就不必担心不同的实现。 XML和JSON等数据交换格式旨在解决互操作性的困难。作为简单的文本格式,它们在所有实现
因此,是的,它们在所有符合标准的实现中都被转义。如果字符串被正确转义,那么只要实现符合标准,就不必担心不同的实现。 XML和JSON等数据交换格式旨在解决互操作性的困难。作为简单的文本格式,它们在所有实现中都以类似的方式进行解释 与JSON相比,XML通过允许我们指定编码格式提供了更细粒度的控制。 然而,JSON在这方面迫使我们遵循unicode编码
注意:简而言之,不要担心JSON本身,但不要忘记在标准ASCII字符上使用unicode字符串(python中的默认值更正:我之前说过JSON规范是显式的,但事实证明,网站上非正式的JSON规范并不像我想象的那样显式,更显式的RFC实际上对术语“控制字符”的解释与unicode标准不同 从: 所有Unicode字符都可以放在 引号,必须转义的字符除外: 引号、反向索利多士和控制字符(U+0000 通过U+001F) 请注意,此控制字符的定义不同于unicode: Unicode认为字符U+007F到U+009F是控制字符,而JSON RFC则认为不是 以下是unicode中考虑换行的字符表: 两个换行符,行(U+2028)和段落(U+2029)分隔符,不是unicode控制字符。它们各自属于自己的unicode类别。NEL字符(U+0085)是一个unicode控制字符,但在JSON中不被视为控制字符。所有这三个字符都可以在JSON字符串中显示为非scaped,并表示它们自己 您可以非常有信心,任何值得一试的JSON库都不会包含CR或LF unscaped。您也不应该看到VT或FF unscaped。但是,您会看到JSON中的NEL、LS和PS字符未scaped
(我以前认为NEL在JSON中被认为是一个控制字符。在此基础上,我向Python提交了这个bug报告,在那里我的错误被指出了:)我想知道为什么要使用换行分隔的JSON,而不是使用包含当前JSON记录的JSON列表这一更简单的选项。请注意,从技术上讲,JSON字符串可能包含换行符,因为JSON只告诉您转义
\n
和\r
d\n
是你通常得到的全部。顺便说一句,不是我的否决票。
Unicode ASCII EBCDIC*
CR 000D 0D 0D 0D
LF 000A 0A 25 15
CRLF 000D,000A 0D,0A 0D,25 0D,15
NEL* 0085 85 15 25
VT 000B 0B 0B 0B
FF 000C 0C 0C 0C
LS 2028 n/a n/a n/a
PS 2029 n/a n/a n/a