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删除空格和回车,但保留引号中的空格的主要内容,如果未能解决你的问题,请参考以下文章