JSON删除空格和回车,但保留引号中的空格

Posted

技术标签:

【中文标题】JSON删除空格和回车,但保留引号中的空格【英文标题】:JSON remove spaces and carriage returns, but preserve spaces in quotes 【发布时间】: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。 【参考方案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) 会将其转换为他们显示的第二个代码块(在 *** cmets 中被截断......)。 我很糟糕,这是一个类似但不同的问题,然后是用您的代码解决的问题。我同意您的解决方案按预期工作。

以上是关于JSON删除空格和回车,但保留引号中的空格的主要内容,如果未能解决你的问题,请参考以下文章

java中的空格和回车符怎样输入。

用逗号和空格分隔字符串,但保留带引号的字符串

删除 JSON 键中的前导和尾随空格

ECMAScript 6 模板字面量的常见用法

pandas使用strip函数将dataframe所有数据列名称中的空格(空格回车符制表符)字符删除

正确显示textarea中输入的回车和空格