JSON中的多行string

我正在写一些JSON格式的数据文件,并希望有一些真正的长string值分割成多行。 使用python的JSON模块,我得到了很多错误,无论我使用\\n作为转义。

是否有可能在JSON中有多行string? 这主要是为了视觉上的舒适,所以我想我可以在我的编辑器中打开文字,但我只是有点好奇。

JSON不允许真正的换行符。 您需要将所有换行符replace为\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,但是这有其他缺陷,并且不是本地支持的。 一旦parsing,我只是使用myData.modify_head.join('\n')myData.modify_head.join() ,这取决于我是否想在每个string之后换行。

检查规格 ! JSON语法的char生成可以采取以下值:

  • any-Unicode-character-except- " – 或 – \ – 或 – 控制字符
  • \"
  • \\
  • \/
  • \b
  • \f
  • \n
  • \r
  • \t
  • \u 四hex数字

换行符是“控制字符”,所以,不,你的string中可能没有字面换行符。 但是,您可以使用\n\r所需的任意组合对其进行编码。

这是一个非常古老的问题,但我在search中遇到了这个问题,我想我知道你的问题的根源。

JSON不允许在其数据中使用“真正的”换行符; 它只能逃过换行。 请参阅上面@YOU的答案。 根据这个问题,看起来你试图用两种方法逃避Python中的换行符:使用行连续符(“\”)或使用“\ n”作为转义符。

但请记住:如果您在Python中使用string,特殊转义字符(“\ t”,“\ n”)被转换为REAL控制字符! “\ n”将被replace为表示换行符的ASCII控制字符,这正是JSON中非法的字符。 (至于连续字符,只需要换行符。)

所以你需要做的是防止Python逃离angular色。 你可以使用一个原始string(把r放在string的前面,如r"abc\ndef" ,或者在换行符( "abc\\ndef" )前加一个额外的斜线。

以上两种方法都不会用真正的换行ASCII控制字符replace“\ n”,而是将两个文字字符“\ n”相加,然后JSON可以将其解释为换行符。

JSON不允许突破行的可读性。

你最好的select是使用一个可以换行的IDE。

将属性值作为string数组写入。 像这里给出的例子https://gun.io/blog/multi-line-strings-in-json/ 。 这将有所帮助。

我们总是可以像下面那样使用多行string的数组。

 { "singleLine": "Some singleline String", "multiline": ["Line one", "line Two", "Line Three"] } 

我们可以很容易地迭代数组来显示多行的内容。

使用正则expression式用\\nreplace所有的\r\n \\n

这在scala中为我工作。

 val newstr = str.replace("\r\n", "\\n") 

将每行换成引号,并用逗号结束,如下所示:

 "content": [ "This is the first line", "this is second", "and so on" ] 

{{名称}}
{{NAME1}}

my.opt.push({ '名称': '行1', 'NAME1': 'LINE2')

是否有可能在JSON中有多行string?

是。 我现在只需通过按F12,点击控制台并在屏幕底部input,就可以使用我的Firefox浏览器对其进行testing。

 x={text:"hello\nworld"} 

Object x刚刚从包含多行string的JSON格式string中创build。

 console.log(x.text) hello world 

会显示x,表明它包含一个多行string。

这两个testing表明,Firefox的Javascript解释器很乐意创build和使用多行string的JSON。

使用JSON.stringifyJSON.parse进行更多的testing表明,Javascript解释器可以将包含多行string的对象转换为JSON,并将其parsing为完全没有问题。

我过去曾经把莎士比亚的全部作品作为JSON对象的一个​​属性存储起来,然后通过互联网发送出去,没有损坏。

这是三行input的两行string

 x={text:"expert\ s\nex\ change"} 

我们可以显示对象

 console.log(x) 

 Object { text: "experts\nexchange" } 

或string

 console.log(x.text) 

 experts exchange 

string中行的结尾是使用\ n和多行input是在行尾使用\来实现的。

在实践中,你可能想要将你的行结束符与string中的行结束符同步,例如

 x={text:"experts\n\ exchange"} 
 fieldval = rs.getString(rs.getMetaData().getColumnName(i)) .trim() .replace("\\", "/") .replace("\r\n", "\\n") .replace("''", "\\n") .replace("\"", "\\n"); 

用多行写记事本++中的任何文本,然后按ctl + a和ctl + j将它们排列在一行

在json文件中写入:

 { "key":"multi line copied from notepad++" } 

把多行文本放在txt文件中,然后

 var str = { text: cat('path_to_file/text.txt') } 

(它的工作在mongoDB上)

您可以尝试在句子之间放置<div></div>