130

我正在编写一个可由 Java 程序读取的 JSON 文件。片段如下...

{
  "testCases" :
  {
    "case.1" :
    {
      "scenario" : "this the case 1.",
      "result" : "this is a very long line which is not easily readble.
                  so i would like to write it in multiple lines.
                  but, i do NOT require any new lines in the output.
                  I need to split the string value in this input file only.
                  such that I don't require to slide the horizontal scroll again and again while verifying the correctness of the statements.
                  the prev line, I have shown, without splitting just to give a feel of my problem"
    }
  }
}
4

5 回答 5

71

根据规范,JSON 语法的char产生可以采用以下值:

  • 任何 Unicode 字符,除了"-\或 - 或控制字符
  • \"
  • \\
  • \/
  • \b
  • \f
  • \n
  • \r
  • \t
  • \u 四位十六进制数

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

JSONLint工具确认您的 JSON 无效


而且,如果您想在 JSON 语法中编写换行符而不实际在数据中包含换行符,那么您就更不走运了。虽然 JSON 在某种程度上旨在对人类友好,但它仍然是数据,您正在尝试对这些数据应用任意格式。这绝对不是 JSON 的意义所在。

于 2013-05-22T11:08:02.050 回答
37

我不确定您的确切要求,但提高“可读性”的一种可能解决方案是将其存储为数组。

{
  "testCases" :
  {
    "case.1" :
    {
      "scenario" : "this the case 1.",
      "result" : ["this is a very long line which is not easily readble.",
                  "so i would like to write it in multiple lines.",
                  "but, i do NOT require any new lines in the output."]
    }
  }
}

}

在需要时再次加入

result.join(" ")
于 2014-01-24T13:10:47.693 回答
9

不是很好的解决方案,但您可以尝试使用hjson工具。它允许您在编辑器中编写多行文本,然后将其转换为正确的有效 JSON 格式。

注意:它为新行添加了 '\n' 字符,但您可以在任何文本编辑器中使用“全部替换..”功能简单地删除它们。

于 2016-06-30T08:25:05.947 回答
3

据我所知,问题不在于如何使用控制符号传递字符串,json而是如何在文件中存储和恢复 json,您可以在其中使用编辑器控制符号拆分字符串。

如果您想在文件中存储多行字符串,那么您的文件将不会存储有效json对象。但是,如果您json只在程序中使用文件,那么您可以根据需要存储数据,并在每次将文件加载到程序时手动从文件中删除所有换行符,然后传递给 json 解析器。

或者,或者,这会更好,您可以在json其中根据需要编辑字符串的数据源文件,然后使用某些实用程序将所有新行删除到json您的程序将使用的有效文件中。

于 2013-05-22T11:58:27.787 回答
3

我相信这取决于您使用的是什么 json 解释器...在纯 JavaScript 中,您可以使用行终止符

{
  "testCases" :
  {
    "case.1" :
    {
      "scenario" : "this the case 1.",
      "result" : "this is a very long line which is not easily readble. \
                  so i would like to write it in multiple lines. \
                  but, i do NOT require any new lines in the output."
    }
  }
}
于 2016-11-21T17:34:25.803 回答