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