I have an indented JSON string e.g.
{
"a": 1
}
However, I don’t have the type of the instance to be serialized or deserialized.
In my situation, what’s the most efficient way to minify a JSON string? e.g.
{"a":1}
I don’t mind using libraries if they are production-ready.
should do it. It makes sure that strings that contain space characters are preserved, and all other space characters are discarded. All JSON keywords (
false,true,null) have to be separated by commas or other punctuation so only white-space inside strings needs to be preserved.The first option
(\"(?:[^\"\\\\]|\\\\.)*\")matches a double quoted string. The(...)mean that the output is captured and available in the replacement as$1. The[^\"\\\\]matches any character except a double quote or escape character\.Since matching occurs left-to-right, the second option,
\s+will not match space inside a string.So we match whole strings, and spaces outside strings. In the former case,
$1is the string token, and in the latter case$1is the empty string because group 1 was not used.This works as intended because
var x=0is different fromvarx=0andx - -(y)is different fromx--(y).