回复:How to remove whitespaces and newlines from every value in a JSON file?
我想做相反的事情,忽略值或组,但从JSON结构中删除所有空格,例如:
输入:
{
"1": "This is a string",
"AnInt": 123,
"3": [6, 9, 429]
}
目标输出:
{"1":"This is a string","AnInt":123,"3":[6,9,429]}
我可以接近\s+(?=(?:[^"]*"[^"]*"[^"]*)*$)
但它不会删除3
中组内和组周围的空格
当我修改REGEX以捕获组的方括号时,它完全破坏了\s+(?=(?:[^"]*"[^"]*"[^"]*)*$)*(?=(?:[^[]*[[^[]*][^]]*)*$)*
3条答案
按热度按时间7rfyedvj1#
你可以使用这个正则表达式来匹配引号外的空格:
如果使用支持所有格量词的正则表达式引擎:
输出:
RegEx Demo
替换将只是一个空字符串。
如果空格在双引号之外,这个正则表达式将通过使用lookahead来分割空格,以确保在匹配1+空格之后有偶数个引号。
atmip9wb2#
你可以通过两个步骤来实现它。
首先,删除所有换行符
https://regex101.com/r/zxoT1g/1
第二,删除所有空格
https://regex101.com/r/psXFCu/1
jdzmm42g3#
其他答案(到目前为止)无法处理嵌套的引号。例如...
是有效的JSON。唯一不必要的空格就在冒号和逗号后面。
我不知道该怎么办。如果在应用程序中从未发生这种情况,您可以忽略该问题吗?
下面是一个hack that might work.
1.隐藏所有转义的反斜杠(使用正则表达式将所有双反斜杠更改为“J$D&@Q!“)
1.类似地隐藏所有转义引号
1.用阿努巴瓦的东西\s+(?=(?:(:[^"]”){2})[^"]*$)删除空格
1.取消隐藏转义的反斜杠和引号。
可能会有用。但我不建议你这么做。更好的方法是使用标准解析器(任何语言都可以使用)解析json,然后使用compressed flag再次将其字符串化!
不要重新发明轮子。