【问题标题】:How to code long JSON value strings as multiline?如何将长 JSON 值字符串编码为多行?
【发布时间】:2014-01-12 16:23:10
【问题描述】:

重要提示:我问的不是字符串渲染为多行。

我正在谈论将 JSON 中的长字符串拆分为多行在我的源代码中,而该字符串在逻辑上应该位于单行上。

简而言之:我想要类似于 HTML 的源代码换行规则。

{
    "id": 550,
    "text": "this is long text "
            "very-very-very long text "
            "longer than you can imagine."
}

此文本应呈现为:

this is long text very-very-very long text longer than you can imagine.

JSON 正在 JavaScript 中被引用。

这不是 Multiline strings in JSON 的重复,因为这个问题强烈涉及 JavaScript,并且该问题没有明确的公认答案。

【问题讨论】:

  • Multiline strings in JSON的可能重复
  • @Francisco Puga:只有 70%
  • 这不是重复的,因为它是关于字符串内部的 \n 而这个是关于如何在 JSON 源中以不同的方式表示相同的内容(更具可读性)。

标签: json string multiline


【解决方案1】:

你可以使用multiple lines string representation in JavaScript:

JSON.parse('{"a" : "a\
asd"}')

在控制台中尝试过。它有效。

【讨论】:

    【解决方案2】:

    根据 JSONLint.com,以下多行 JSON 是有效的。简而言之,是的,您可以按回车键并将其分成不同的行。

    {
        "a": 10,
        "b": 12,
        "c": 19
    }
    

    编辑:我想我误读了你的问题。我认为您无法在如下字符串之间中断。那是行不通的。

    {
        "a": "abcde
        fg",
        "b": 12,
        "c": 19
    }
    

    【讨论】:

    • 你能解释一下上下文吗?你用什么语言写的,为什么需要换行等等?
    • 你可以在 "a" 中使用一个字符串数组:["abcde", "fg"],然后在你的 js 代码中使用 join() (对于一长行文本作为 " abcdefg") 或 join("\n") 用于两行的文本表示。
    【解决方案3】:

    使用数组:

    {
        "id": 550,
        "text": ["this is long text ",
                "very-very-very long text ",
                "longer than you can imagine."]
    }
    

    假设这在 this.messages 中,在代码中使用

    this.messages.text.join();
    

    【讨论】:

      【解决方案4】:

      你不行,你需要在一行写值,如果你想写在下一行,你需要把\n放在你的代码中

      【讨论】:

      • 问题清楚地表明它应该呈现为一行
      • 他明确表示他“不是在询问 rendering 字符串为多行。”也许你可以举一个例子来说明如何使用 JavaScript 解决这个问题?有点像Pinal’s answer
      猜你喜欢
      • 2016-04-05
      • 2012-07-15
      • 2018-12-12
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 2013-06-07
      相关资源
      最近更新 更多