删除 C# 中所有非必要的 json 格式

Fra*_*kie 2 c# .net-core

假设我有一些复杂的 json,如下所示:

{
  "ref": "some",
  "repository": {
    "id": 123456789,
    "name": "foo bar"
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其转换为以下格式:

{"ref":"some","repository":{"id":123456789,"name":"foo bar"}}
Run Code Online (Sandbox Code Playgroud)

因此,除了 json 键/值对本身中的空格或换行符之外,没有空格或换行符。

Regex.Replace(myJson, @"\s+", string.Empty)foo bar删除结果中的空格foobar

使用

JsonConvert.SerializeObject(myJson, Formatting.None)

给我

{\n \"ref\": \"some\",\n \"repository\": {\n \"id\": 123456789,\n \"name\": \"foo bar\"\n }\n}

我可以删除此 json 上所有非必要的空格和换行符的另一种方法是什么?

gil*_*uck 5

您始终可以将 json 反序列化为对象,然后重新序列化它。在不提供任何选项的情况下,默认结果符合您的要求。

    var rawJson = @"{
  ""ref"": ""some"",
  ""repository"": {
    ""id"": 123456789,
    ""name"": ""foo bar""
  }
}";
    var tempObj = JsonConvert.DeserializeObject(rawJson);
    var inlineJson = JsonConvert.SerializeObject(tempObj);
Run Code Online (Sandbox Code Playgroud)

其输出是{"ref":"some","repository":{"id":123456789,"name":"foo bar"}}