using System.Text.Json;
using static System.Text.Json.JsonSerializer;
public static class JsonExtensions
{
public static string Minify(this string json)
=> Serialize(Deserialize<JsonDocument>(json));
}
private static string Minify(string json)
{
var options =
new JsonWriterOptions
{
Indented = false,
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
};
using var document = JsonDocument.Parse(json);
using var stream = new MemoryStream();
using var writer = new Utf8JsonWriter(stream, options);
document.WriteTo(writer);
writer.Flush();
return Encoding.UTF8.GetString(stream.ToArray());
}
4条答案
按热度按时间brjng4g31#
只需解析它,然后序列化回JSON:
SerializeObject(obj, Formatting.None)
方法接受Formatting
枚举作为第二个参数。您总是可以选择是使用Formatting.Indented
还是Formatting.None
。yhqotfr82#
使用System.Text.Json的非常基本的扩展方法
这将利用JsonSerializerOptions的默认值
ccrfmcuu3#
从此处找到:https://github.com/MatthewKing/JsonFormatterPlus/blob/master/src/JsonFormatterPlus/JsonFormatter.cs
vfwfrxfs4#
如果您使用的是
System.Text.Json
,那么应该可以:Encoder
选项不是必需的,但我最终还是采用了这种方法,这样字符就不会那么频繁地转义。例如,当使用默认编码器时,+
会被\u002B44
替换。