使用 .NET 缩小 json 字符串

nop*_*ace 11 .net json minify

如何清理/压缩现有的 json 字符串?我见过使用正则表达式。还有其他(也许更有效)的方法吗?

And*_*rei 14

Install-Package Newtonsoft.Json
Run Code Online (Sandbox Code Playgroud)

只需解析它,然后序列化回 JSON:

var jsonString = "  {  title: \"Non-minified JSON string\"  }  ";
var obj = JsonConvert.DeserializeObject(jsonString);
jsonString = JsonConvert.SerializeObject(obj);
Run Code Online (Sandbox Code Playgroud)

SerializeObject(obj, Formatting.None)方法接受Formatting枚举作为第二个参数。您可以随时选择是否需要Formatting.IndentedFormatting.None

  • 谢谢 Andrei,可能反序列化和重新序列化只是为了清理生成的 json 是一种矫枉过正。使用正则表达式可能仍然更有效。 (3认同)

Nul*_*ard 8

使用 System.Text.Json 的非常基本的扩展方法

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));
}
Run Code Online (Sandbox Code Playgroud)

这利用了 JsonSerializerOptions 的默认值

JsonSerializerOptions.WriteIndented = false
Run Code Online (Sandbox Code Playgroud)