【问题标题】:JSON remove spaces and carriage returns, but preserve spaces in quotesJSON删除空格和回车,但保留引号中的空格
【发布时间】:2014-12-11 17:31:31
【问题描述】:

我需要这样的 JSON 对象:

{
  "name": "This is a name",
  "description": "This is    the description"
}

并删除所有回车符和引号中的空格。所以结果应该是这样的:

{"name":"This is a name","description":"This is    the description"}

引号内的空格需要保留。

jQuery 解决方案很好。

谢谢!

-马特

【问题讨论】:

  • 如何存储对象?除非它是一个字符串或从某个地方作为字符串读取,否则它没有理由包含换行符或无关空格。能说详细一点吗?
  • 我的语言不准确。它不是对象,而是将其作为字符串获取。我从表单中的文本区域获取 JSON 作为文本。用户正在输入数据,很可能是通过复制和粘贴。
  • 两个版本代表相同的 JSON - 第一个只是“漂亮的打印”。任何解析器都应该能够将任何有效的 JSON 解析为相应的表示。所以,实际上,您不需要它;)可能有 JSON 生成器通过指定选项参数来获取表示并输出“漂亮”的 JSON 或简洁的 JSON。

标签: json spaces reformat


【解决方案1】:

读取 CSV 文件并将其放入 JSON 时,我遇到了与回车相同的问题:

var json = JSON.stringify({"name": "This is a name","description": "This is    the description"});
json = json.replace(/\\r/g, ''); 

您必须使用\\r 而不是 \r,因为回车转义。

【讨论】:

    【解决方案2】:

    由于您是从文本字段中以字符串形式获取它,因此您应该能够只使用现代 JavaScript 的内置函数:

    var asObj = JSON.parse(asStr);
    // now you have an object for use.
    // assuming you want it back as a str
    var asStr2 = JSON.stringify(asObj);
    

    这应该为您完成大部分剥离工作。

    【讨论】:

    • 这没有像描述的那样工作,换行符仍然存在于最终的 asStr2 中
    • @LessQuesar - 我不确定您是否正在寻找与 OP 相同的问题 - 在他们在问题下方的评论中,他们澄清输入数据是字符串(来自用户的输入)。 JSON.parse(inputData) 将给出对象表示(没有引号外间距的概念)。 JSON.stringify(obj) 会将其转换为他们显示的第二个代码块(在 StackOverflow cmets 中被截断......)。
    • 我很糟糕,这是一个类似但不同的问题,然后是用您的代码解决的问题。我同意您的解决方案按预期工作。
    猜你喜欢
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 2014-08-22
    • 2015-10-08
    • 2013-12-13
    • 2021-02-02
    相关资源
    最近更新 更多