JSON 中是否可以包含多行字符串?
这主要是为了视觉舒适,所以我想我可以在编辑器中打开自动换行功能,但我有点好奇。
我正在以 JSON 格式编写一些数据文件,并希望将一些很长的字符串值分成多行。使用 python 的 JSON 模块,无论使用\
还是\n
进行转义,我都会遇到很多错误。
JSON不允许使用实际的换行符。您需要将所有换行符替换为\n
。
例如:
"first line second line"
可以保存为:
"first line\nsecond line"
笔记:
对于Python
,应这样写:
"first line\\nsecond line"
\\
用于转义反斜杠,否则 python 将\n
视为控制字符 “换行”
我不得不对一个小的 Node.js 项目执行此操作,并发现了以下解决方法:
{
"modify_head": [
"<script type='text/javascript'>",
"<!--",
" function drawSomeText(id) {",
" var pjs = Processing.getInstanceById(id);",
" var text = document.getElementById('inputtext').value;",
" pjs.drawText(text);}",
"-->",
"</script>"
],
"modify_body": [
"<input type='text' id='inputtext'></input>",
"<button onclick=drawSomeText('ExampleCanvas')></button>"
],
}
这对我来说看起来很整洁,因为我必须在所有地方都使用双引号。尽管不是这样,我也许可以使用 YAML,但这有其他陷阱,并且本机不支持。解析后,我只是使用myData.modify_head.join('\n')
或myData.modify_head.join()
,具体取决于我是否要在每个字符串后换行。
不幸的是,这里的许多答案都解决了如何在字符串数据中放置换行符的问题。问题是如何通过将字符串值拆分为多行代码来使代码看起来更好。 (甚至认识到这一点的答案也提供了 “解决方案”,这些解决方案假定一个人可以自由更改数据表示形式,而在许多情况下则不能。)
更糟糕的消息是,没有好的答案。
在许多编程语言中,即使它们不显式支持跨行分割字符串,您仍然可以使用字符串串联来获得所需的效果;只要编译器不是很糟糕,就可以了。
但是 json 不是一种编程语言。这只是一个数据表示。您不能告诉它连接字符串。它的(相当小的)语法也不包含任何表示多行字符串的功能。
缺少设计某种预处理器的过程(而我,其中一个,我不希望自己有效地用自己的语言来解决这个问题),但是没有一个通用的解决方案可以解决这个问题。如果可以更改数据格式,则可以替换字符串数组。否则,这是 json 并非为人类可读性而设计的众多方式之一。