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,
$1
is the string token, and in the latter case$1
is the empty string because group 1 was not used.This works as intended because
var x=0
is different fromvarx=0
andx - -(y)
is different fromx--(y)
.That regex below works for me.
I am using it on .NET Core app project. Regex is from that answer.