我正在用JSON格式编写一些数据文件,并希望将一些非常长的字符串值分成多行。 使用python的JSON模块我得到了很多错误,无论我使用\\
或\\n
作为转义。
是否可以在JSON中使用多行字符串? 这主要是为了视觉上的舒适,所以我想我可以在我的编辑器中翻开自动换行,但我只是有点好奇......
#1楼
这是一个非常古老的问题,但我在搜索时遇到了这个问题,我想我知道问题的根源。
JSON不允许在其数据中使用“真正的”换行符; 它只能逃脱换行。 请参阅@YOU的答案 。 根据这个问题,看起来你试图以两种方式逃避Python中的换行:使用行继续符( "\\"
)或使用"\\n"
作为转义。
但请记住:如果你在python中使用字符串,特殊的转义字符( "\\t"
, "\\n"
)将被转换为REAL控制字符! "\\n"
将替换为表示换行符的ASCII控制字符,该字符恰好是JSON中非法的字符。 (至于续行字符,它只需要换行。)
所以你需要做的是防止Python转义字符。 您可以通过使用原始字符串(将r
放在字符串前面,如r"abc\\ndef"
,或者在换行符前面加一个额外的斜杠( "abc\\\\ndef"
)来完成此操作。
以上两种方法都不会将"\\n"
替换为真正的换行符ASCII控制字符,而是将"\\n"
作为两个文字字符,然后JSON可以将其解释为换行符。
#2楼
查看规格 ! JSON语法的char生成可以采用以下值:
- any-Unicode-character-except-
"
-or-\\
-or-control-character -
\\"
-
\\\\
- <