是否有可能在JSON中有多行字符串?
这主要是为了视觉上的舒适,所以我想我可以在编辑器中打开自动换行,但我只是有点好奇。
我正在编写JSON格式的一些数据文件,并希望有一些非常长的字符串值分割在多行。使用python的JSON模块,无论我使用\或\n作为转义,我都会得到很多错误。
是否有可能在JSON中有多行字符串?
这主要是为了视觉上的舒适,所以我想我可以在编辑器中打开自动换行,但我只是有点好奇。
我正在编写JSON格式的一些数据文件,并希望有一些非常长的字符串值分割在多行。使用python的JSON模块,无论我使用\或\n作为转义,我都会得到很多错误。
当前回答
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的任意组合来编码它。
我看到许多的答案可能不工作在大多数情况下,但可能是最简单的解决方案如果假设你想输出你写在一个JSON文件(例如:语言翻译,你想和超过1线只有一个关键输出在客户机上)可以添加一些特殊字符您所选择的PS:允许通过JSON文件\ \新行之前和使用一些JS解析文本…如:
例子:
文件(text.json)
{"text": "一些JSON文本。\\下一行JSON文本"}
import text from 'text.json'
{text.split('\\')
.map(line => {
return (
<div>
{line}
<br />
</div>
);
})}}
JSON不允许真正的换行。您需要将所有换行符替换为\n。
eg:
"first line
second line"
可以通过以下方式保存:
“一线/二线”
注意:
对于Python,这应该写成:
“一线、二线”
\\是用来转义反斜杠的,否则python会把\n当作 控制字符“new line”
如果只是为了在编辑器中显示,你可以使用'代替'或'
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`);
将放在控制台: 第一行 第二行
希望这回答了你的问题。
您可以在客户端编码,在服务器端解码。这也可以处理\n和\t字符
例:我需要通过json发送多行xml
{
"xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CiAgPFN0cnVjdHVyZXM+CiAgICAgICA8aW5wdXRzPgogICAgICAgICAgICAgICAjIFRoaXMgcHJvZ3JhbSBhZGRzIHR3byBudW1iZXJzCgogICAgICAgICAgICAgICBudW0xID0gMS41CiAgICAgICAgICAgICAgIG51bTIgPSA2LjMKCiAgICAgICAgICAgICAgICMgQWRkIHR3byBudW1iZXJzCiAgICAgICAgICAgICAgIHN1bSA9IG51bTEgKyBudW0yCgogICAgICAgICAgICAgICAjIERpc3BsYXkgdGhlIHN1bQogICAgICAgICAgICAgICBwcmludCgnVGhlIHN1bSBvZiB7MH0gYW5kIHsxfSBpcyB7Mn0nLmZvcm1hdChudW0xLCBudW0yLCBzdW0pKQogICAgICAgPC9pbnB1dHM+CiAgPC9TdHJ1Y3R1cmVzPg=="
}
然后在服务器端解码
public class XMLInput
{
public string xml { get; set; }
public string DecodeBase64()
{
var valueBytes = System.Convert.FromBase64String(this.xml);
return Encoding.UTF8.GetString(valueBytes);
}
}
public async Task<string> PublishXMLAsync([FromBody] XMLInput xmlInput)
{
string data = xmlInput.DecodeBase64();
}
一旦解码,您将得到原始的XML
<?xml version="1.0" encoding="utf-8" ?>
<Structures>
<inputs>
# This program adds two numbers
num1 = 1.5
num2 = 6.3
# Add two numbers
sum = num1 + num2
# Display the sum
print('The sum of {0} and {1} is {2}'.format(num1, num2, sum))
</inputs>
</Structures>