j3d*_*j3d 5 javascript regex json
鉴于以下json ......
var body = "{ \"name\": \"test\", \"description\": \"test json\", \"website\": \"domain.com\" }"
Run Code Online (Sandbox Code Playgroud)
...除了值中的空格之外,我该如何删除所有空格?
我试过以下正则表达式......
var body = "{ \"name\": \"test\", \"description\": \"test json\", \"website\": \"domain.com\" }".replace(/\r?\n|\r/g, "").replace(/\s+/g, "")
Run Code Online (Sandbox Code Playgroud)
...但它也删除了值中的空格(即description):
{"name":"test","description":"testjson","website":"domain.com"}
Run Code Online (Sandbox Code Playgroud)
我需要获得
{"name":"test","description":"test json","website":"domain.com"}
Run Code Online (Sandbox Code Playgroud)
TX.
Nie*_*jes 12
var body = ' { "name": "test", "description": "test json", "website": "domain.com" } ';
JSON.stringify(JSON.parse(body))
Run Code Online (Sandbox Code Playgroud)
返回:
{"name":"test","description":"test json","website":"domain.com"}
Run Code Online (Sandbox Code Playgroud)
这正是你想要的.是的,JSON.stringify1参数保证给出最短的JSON,这意味着键和值之外没有过时的空格.这是默认值,因为在几乎所有情况下,JSON都是一种高效的递归数据序列化方法 - 默认情况下不需要使用不必要的空格.
JSON.stringify(value[, replacer [, space]])
Run Code Online (Sandbox Code Playgroud)
可选的第三个参数默认为false- 如果设置为另一个值,它会产生带有额外空格或引入字符串的'pretty print':
space参数可用于控制最终字符串中的间距.如果是数字,则字符串化中的连续级别将由这么多空格字符(最多10个)缩进.如果它是一个字符串,则连续的级别将由此字符串(或其前十个字符)缩进.
最后一点,你甚至不应该要使用正则表达式这一点.Regexp用于理解字符模式,而不是用于处理XML,HTML或JSON等结构化数据.在这些情况下,分别使用XML,DOM或JSON解析器并在那里处理结果.