我有一个缩进的JSON字符串,例如
{ "a": 1 }
但是,我没有要序列化或反序列化的实例的类型。
在我的情况下, 最小化* JSON字符串的 最有效方法 是什么?例如 *
{"a":1}
我不介意使用可用于生产的库。
Regex.Replace(myJSON, "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1")
应该做。它确保保留包含空格字符的字符串,并丢弃所有其他空格字符。所有的JSON的关键字(false,true,null)必须由逗号或其他标点符号所以只有字符串内需要空格分开予以保留。
false
true
null
第一个选项(\"(?:[^\"\\\\]|\\\\.)*\")匹配双引号字符串。(...)表示已捕获输出并在替换中可用的平均值$1。在[^\"\\\\]除双引号或转义字符匹配任何字符\。
(\"(?:[^\"\\\\]|\\\\.)*\")
(...)
$1
[^\"\\\\]
\
由于匹配是从左到右进行的,因此第二个选项\s+将不匹配字符串中的空格。
\s+
因此,我们匹配整个字符串,并在字符串外部匹配空格。在前一种情况下,$1为字符串标记,在后一种情况下$1为空字符串,因为未使用组1。
这按预期工作,因为
var x=0
varx=0
x - -(y)
x--(y)