JavaScript:如何从 JSON 字符串中删除除值中的空格之外的所有空格?
Posted
技术标签:
【中文标题】JavaScript:如何从 JSON 字符串中删除除值中的空格之外的所有空格?【英文标题】:JavaScript: how do I remove all the white spaces from a JSON string except the ones in the values? 【发布时间】:2014-10-29 20:00:49 【问题描述】:鉴于以下 json...
var body = " \"name\": \"test\", \"description\": \"test json\", \"website\": \"domain.com\" "
...如何删除除值中的空格之外的所有空格?
我尝试了以下正则表达式...
var body = " \"name\": \"test\", \"description\": \"test json\", \"website\": \"domain.com\" ".replace(/\r?\n|\r/g, "").replace(/\s+/g, "")
...但它也会删除值中的空格(即description
):
"name":"test","description":"testjson","website":"domain.com"
我需要获取
"name":"test","description":"test json","website":"domain.com"
发送。
【问题讨论】:
我认为你错过了 JSON 的重点,因为那不是 JSON,而是一个 javascript 对象。你想要JSON.stringify(body)
JSON.stringify(body)
不带空格返回。在尝试从那里删除之前,您是否尝试查看是否有空格?
@zerkms 嗯,这是标准/保证的行为吗?
在实际示例中,我得到一个带有空格的 JSON 字符串...让我在我的帖子中修复这个示例。
新版问题:先parse
,再stringify
【参考方案1】:
var body = ' "name": "test", "description": "test json", "website": "domain.com" ';
JSON.stringify(JSON.parse(body))
返回:
"name":"test","description":"test json","website":"domain.com"
这正是您想要的。是的,带有 1 个参数的 JSON.stringify
保证提供最短的 JSON,这意味着键和值之外没有过时的空格。这是默认设置,因为在几乎所有情况下,JSON 都旨在成为一种高效的递归数据序列化方法 - 默认情况下,不必要的空格在那里没有用处。
The full syntax is actually:
JSON.stringify(value[, replacer [, space]])
可选的第三个参数默认为false
- 如果设置为另一个值,它会生成带有额外空格或前导字符串的“漂亮打印”:
空格参数可用于控制最终字符串中的间距。 如果它是一个数字,则字符串化中的连续级别将分别 缩进这么多空格字符(最多 10 个)。如果它是一个 字符串,连续级别将由该字符串缩进(或第一个 十个字符)。
最后一点,您甚至不应该想要为此使用正则表达式。正则表达式用于理解字符模式,而不是用于处理 XML、html 或 JSON 等结构化数据。在这些情况下,请分别使用 XML、DOM 或 JSON 解析器并在其中处理结果。
【讨论】:
我刚刚更新了我的帖子...我得到一个包含空格的 json 字符串...所以调用 stringify 对我不起作用。 更新了答案。显然,先使用JSON.parse
使其成为有效对象,然后再使用stringify
。【参考方案2】:
解析 JSON,然后再次对其进行字符串化。解析它将 JSON 转换为 Javascript 对象,然后将其字符串化将返回最短的 JSON 表示:
var body = JSON.stringify(JSON.parse(" \"name\": \"test\", \"description\": \"test json\", \"website\": \"domain.com\" "));
【讨论】:
以上是关于JavaScript:如何从 JSON 字符串中删除除值中的空格之外的所有空格?的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift 如何从 UIWebView 将 JSON 字符串和数组或字典传递给 Javascript?
如何使用 JavaScript 将 JSON 文件从 HTML 页面发送到 ESP
将大型 json 字符串从 Javascript 发布到 Django