我正在写一些JSON格式的数据文件,并希望将一些非常长的字符串值分割成多行。使用python的JSON模块,我得到了很多错误,无论是使用\
还是\n
作为转义。JSON中的多行字符串
是否有可能在JSON中有多行字符串?这主要是为了视觉上的舒适,所以我想我可以在我的编辑器中打开单词换行,但我只是有点好奇...
我正在写一些JSON格式的数据文件,并希望将一些非常长的字符串值分割成多行。使用python的JSON模块,我得到了很多错误,无论是使用\
还是\n
作为转义。JSON中的多行字符串
是否有可能在JSON中有多行字符串?这主要是为了视觉上的舒适,所以我想我可以在我的编辑器中打开单词换行,但我只是有点好奇...
JSON不允许真正的换行符。您需要将所有换行符替换为\n
。
-1 OP *是*使用“\ n”转义序列。它不工作,因为它们没有*反斜杠*,因为“\\ n”,所以Python正在将转义序列转换为换行符,而不是像JSON所要求的那样将其作为字面上的反斜杠和后面的en。 – user359996 2013-01-30 21:57:43
@ user359996我不确定这是真的。对我来说(只用'\ n'将数据存储在JSON中并通过Curses输出),'\ n'似乎工作正常。它看起来取决于视图/渲染引擎。 – ashes999 2014-03-07 14:28:53
换行符确实是平台特定的(参见http://en.wikipedia.org/wiki/Newline#Representations)。但是,每个@Lightness在Orbit的答案中进行比赛时,JSON语法中都不包含游标返回或换行符。我实际上不是一个Python程序员,所以我不确定你的情况如何,但是你的解析器坏了,或者你没有通过你认为自己的东西。也许这个答案更好地解释它:http://stackoverflow.com/a/9295597/359996。特别注意关于双重逃脱的位。 – user359996 2014-03-07 17:28:25
我不得不对小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>"
],
}
这看起来相当整洁对我来说,从APPART,我要到处使用双引号。尽管如此,我也许可以使用YAML,但这有其他缺陷,并且本机不支持。一旦解析,我只使用myData.modify_head.join('\n')
或myData.modify_head.join()
,这取决于我是否想要在每个字符串之后换行。
这是针对特定设置的解决方案,不一定与问题相关。你在那里创建的不是多行字符串(这是不可能的),但是在 – 2015-06-12 13:04:03
之内的字符串的数组这里显示了如何在字符串中插入换行符,这不会回答问题。 [这个答案](https://stackoverflow.com/a/27256893/903600)呢。 – fgrieu 2015-07-16 07:20:57
fgrieu - 人们可以轻松地串联字符串而不添加换行符。通过这种小改动,它可以为多行字符串提供解决方法(只要您能够控制指定JSON模式)。我会尽力改进这个答案。 – drrob 2015-10-15 10:56:06
这是一个非常古老的问题,但我在搜索中发现了这个问题,我想我知道你的问题的根源。
JSON不允许其数据中包含“真实”换行符;它只能逃脱换行符。请参阅上文@YOU的答案。根据这个问题,它看起来像你试图用两种方法逃避Python中的换行符:使用行连续符(“\”)或使用“\ n”作为转义符。但请注意:如果您在python中使用字符串,特殊转义字符(“\ t”,“\ n”)会被转换为REAL控制字符! “\ n”将替换为表示换行符的ASCII控制字符,这正是JSON中非法的字符。 (至于续行字符,它只需要换行符。)
因此,您需要做的是防止Python转义字符。您可以通过使用原始字符串做到这一点(把r
在前面的字符串,如r"abc\ndef"
,或者通过在换行("abc\\ndef"
)的前一个额外的斜杠。
两个以上的意志,而不是替换“\ n”使用真正的换行符ASCII控制字符,会将“\ n”作为两个文字字符,然后JSON可以解释为新行转义字符
检出the specification!该JSON语法的焦炭生产可以采取以下值:
"
- 或 - \
-or控制字符\"
\\
\/
\b
\f
\n
\r
\t
\u
四十六进制数字换行 “控制字符”,所以,不,你可能不会内有面值换行符你的字符串。但是,您可以使用您需要的任何组合\n
和\r
对其进行编码。
把多行文本上的txt文件,然后
var str = {
text: cat('path_to_file/text.txt')
}
(它的工作对MongoDB的)
-1:这是一个误导性的答案。它既不是有效的JSON,也不是在JavaScript中工作,因为没有名为'cat'的函数。 – 2015-12-16 17:41:36
JSON不允许断行以提高可读性。
最好的办法就是使用一个可以为您换行的IDE。
像BBEdit这样的支持“软”换行的编辑器是理想选择。它将文本包装起来,使其全部出现在编辑器窗口的可见区域内,但只有您键入的行结束符(例如,回车符)才会保存在文件中。使用真正的长字符串编辑JSON变得更容易,而不必诉诸于代码技巧或黑客行为。 – cshotton 2017-08-18 13:05:31
你可以尝试在句子之间试试<div></div>
。
这可能会更严重吗? :D – 2017-04-27 15:31:43
需要更多的jQuery。 – undefined 2017-07-03 21:51:12
希望2 upvotes是为了开玩笑 – 2018-01-26 13:10:54
写在记事本中的任何文字++多的多线 然后按CTL +和CTL + J将它们在同一行安排
在JSON文件的写:
这似乎已经完全删除了所有换行符!也许提到如何用Notepad ++中的/ n替代硬换行符在这里会更有用。 – Bernard 2016-04-19 02:03:32
写属性值作为字符串数组。就像这里给出的例子https://gun.io/blog/multi-line-strings-in-json/。这将有所帮助。
我们总是可以对多行字符串使用如下所示的字符串数组。
{
"singleLine": "Some singleline String",
"multiline": ["Line one", "line Two", "Line Three"]
}
而且我们可以很容易地迭代数组来显示多线时尚的内容。
我建议你在链接的答案中加入信息,因为链接将来可能会中断。 – YoungHobbit 2015-10-07 10:40:12
fieldval = rs.getString(rs.getMetaData().getColumnName(i))
.trim()
.replace("\\", "/")
.replace("\r\n", "\\n")
.replace("''", "\\n")
.replace("\"", "\\n");
有些解释会提高答案的质量。 – m02ph3u5 2016-03-08 11:06:45
{{名称}}
{{NAME1}}
my.opt.push({ '名称': '行1', 'NAME1': 'LINE2')
我给出
标签名称和名称之间的关系1 –
2017-07-08 21:42:02
是否有可能在JSON中有多行字符串?
是的。我只需通过按F12,单击控制台并在屏幕底部键入,即可用我的Firefox Web浏览器对其进行测试。
x={text:"hello\nworld"}
对象x刚刚从包含多行字符串的JSON格式字符串创建。
console.log(x.text)
hello
world
显示x.text表明它是一个多行字符串。
这两个测试显示Firefox的Javascript解释器很乐意创建和使用带有多行字符串的JSON。
更多与JSON.stringify
和JSON.parse
的测试显示,Javascript解释器可以将包含多行字符串的对象转换为JSON并将其解析回来,而没有任何问题。
我过去曾将莎士比亚的全部作品存储为JSON对象中的一个属性,然后通过互联网将其发送至未损坏的作品。
下面是输入超过三行
x={text:"expert\
s\nex\
change"}
我们可以显示对象
console.log(x)
给予
Object { text: "experts\nexchange" }
或串的两行字符串
console.log(x.text)
使用\ n 和多条输入线,仅使用取得了\在该行的末尾给出
experts
exchange
在字符串结果线的端部。
实际上,您可能希望将您的行结束符与字符串中的行结束符同步,例如,
x={text:"experts\n\
exchange"}
console.log("Hello\nWorld".length)
11
console.log("Hello World".length)
11
注意与换行符字符串不是比用空间的字符串长。即使键盘上键入了两个字符('\'和'n'),字符串中只会存储一个字符。
不是一个JSON的答案,但对人打交道,在CoffeeScript中“类JSON”数据替代。
CSON(ç奥菲小号 CRIPT ö bject Ñ浮选)本身处理多行字符串:
singleline: 'single line'
multiline: '''
line one
line two
line three
'''
,你可以简单地用你的欲望多串运行下面的代码波浪之间~
字符:
var multiLineString = `
this
is
the
multiline
String
`;
JSON.stringify(multiLineString);
这并不回答这个问题。放在坟墓(')字符之间的字符是ES6模板文字,其主要焦点是用于模板化字符串,而不是用于支持此格式的多行文本。 尽管您可以在技术上使用它们(如此处所示),但所有结果都是格式如下的字符串: '“”\ n本\ n是\ n多行\ n字符串\ n \ n“”' 哪个不是有效的JSON,并且不回答OP的问题。上面的其他答案更好地解决了这个问题。 – TuxToaster 2018-02-27 03:56:05
的[?如何处理换行符JSON(可能的复制https://stackoverflow.com/questions/42068/how-do-i-handle-newlines-in-json) – Flimzy 2017-08-13 09:25:13