创建不带数组缩进的JSON

时间:2018-11-09 09:58:20

标签: c# json

我通常会得到很大的JSON,其中包含很多列表以及列表中的许多元素。我的目标是获得左侧结构而不是右侧结构。 正确的结构是我从Newtonsoft得到的。 是否有另一个库可以让我像这样打印它?

enter image description here

最佳情况是:

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您将JsonTextWriter类子类化并重写WriteIndent方法,则可以使用Json.Net(也称为Newtonsoft Json)获得所需的缩进:

public class CustomJsonTextWriter : JsonTextWriter
{
    public CustomJsonTextWriter(TextWriter writer) : base(writer)
    {
    }

    protected override void WriteIndent()
    {
        if (WriteState != WriteState.Array)
            base.WriteIndent();
        else
            WriteIndentSpace();
    }
}

然后创建一个小的辅助方法,以使其易于使用自定义编写器:

public static class JsonHelper
{
    public static string SerializeWithCustomIndenting(object obj)
    {
        using (StringWriter sw = new StringWriter())
        using (JsonWriter jw = new CustomJsonTextWriter(sw))
        {
            jw.Formatting = Formatting.Indented;
            JsonSerializer ser = new JsonSerializer();
            ser.Serialize(jw, obj);
            return sw.ToString();
        }
    }
} 

这是一个有效的演示:https://dotnetfiddle.net/RusBGI