是否有可能在JSON中有多行字符串?
这主要是为了视觉上的舒适,所以我想我可以在编辑器中打开自动换行,但我只是有点好奇。
我正在编写JSON格式的一些数据文件,并希望有一些非常长的字符串值分割在多行。使用python的JSON模块,无论我使用\或\n作为转义,我都会得到很多错误。
是否有可能在JSON中有多行字符串?
这主要是为了视觉上的舒适,所以我想我可以在编辑器中打开自动换行,但我只是有点好奇。
我正在编写JSON格式的一些数据文件,并希望有一些非常长的字符串值分割在多行。使用python的JSON模块,无论我使用\或\n作为转义,我都会得到很多错误。
当前回答
我看到许多的答案可能不工作在大多数情况下,但可能是最简单的解决方案如果假设你想输出你写在一个JSON文件(例如:语言翻译,你想和超过1线只有一个关键输出在客户机上)可以添加一些特殊字符您所选择的PS:允许通过JSON文件\ \新行之前和使用一些JS解析文本…如:
例子:
文件(text.json)
{"text": "一些JSON文本。\\下一行JSON文本"}
import text from 'text.json'
{text.split('\\')
.map(line => {
return (
<div>
{line}
<br />
</div>
);
})}}
其他回答
将属性值写入字符串数组。比如这里给出的例子https://gun.io/blog/multi-line-strings-in-json/。这将有所帮助。
我们总是可以使用数组的字符串多行字符串,如下所示。
{
"singleLine": "Some singleline String",
"multiline": ["Line one", "line Two", "Line Three"]
}
我们可以很容易地迭代数组以多行方式显示内容。
不幸的是,这里的许多答案都解决了如何在字符串数据中放入换行符的问题。问题是如何通过将字符串值拆分到多行代码中来使代码看起来更好。(即使是认识到这一点的答案也提供了假设人们可以自由改变数据表示的“解决方案”,而在许多情况下,人们并不是这样。)
更糟糕的是,没有好的答案。
在许多编程语言中,即使它们不显式地支持跨行分割字符串,您仍然可以使用字符串连接来获得所需的效果;只要编译器不是那么糟糕就可以了。
但是json不是一种编程语言;它只是一个数据表示。你不能告诉它去连接字符串。它的语法(相当小)也不包括任何在多行上表示字符串的工具。
除了设计某种类型的预处理器(就我个人而言,我不想有效地创造自己的语言来解决这个问题),这个问题没有一个通用的解决方案。如果可以更改数据格式,则可以替换字符串数组。否则,这就是json不是为人类可读性而设计的众多方面之一。
JSON不允许真正的换行。您需要将所有换行符替换为\n。
eg:
"first line
second line"
可以通过以下方式保存:
“一线/二线”
注意:
对于Python,这应该写成:
“一线、二线”
\\是用来转义反斜杠的,否则python会把\n当作 控制字符“new line”
查看规格!JSON语法的char生成可以取以下值:
any-Unicode-character-except——“或者——\ -or-control-character \” \ \ \/ \ b \ f \ n r \ \ t \ u four-hex-digits
换行符是“控制字符”,所以,不,你可以在你的字符串中没有文字换行符。然而,你可以使用你需要的\n和\r的任意组合来编码它。
如果只是为了在编辑器中显示,你可以使用'代替'或'
const obj = {
myMultiLineString: `This is written in a \
multiline way. \
The backside of it is that you \
can't use indentation on every new \
line because is would be included in \
your string. \
The backslash after each line escapes the carriage return.
`
}
例子:
console.log(`First line \
Second line`);
将放在控制台: 一线二线
console.log(`First line
second line`);
将放在控制台: 第一行 第二行
希望这回答了你的问题。