Customize identation parameter in JsonConvert.SerializeObject

后端 未结 1 1161
春和景丽
春和景丽 2020-12-21 03:10

The default ident in Json.Net seems to be 2 spaces:

var result = JsonConvert.SerializeObject(jsonString, Formatting.Indented);

For clarity

相关标签:
1条回答
  • 2020-12-21 03:50

    I would create a utility class which serializes it with the right indentation, similar to how JsonConvert.SerializeObject does it:

    public static class JsonConvertEx
    {
        public static string SerializeObject<T>(T value)
        {
            StringBuilder sb = new StringBuilder(256);
            StringWriter sw = new StringWriter(sb, CultureInfo.InvariantCulture);
    
            var jsonSerializer = JsonSerializer.CreateDefault();
            using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
            {
                jsonWriter.Formatting = Formatting.Indented;
                jsonWriter.IndentChar = ' ';
                jsonWriter.Indentation = 4;
    
                jsonSerializer.Serialize(jsonWriter, value, typeof(T));
            }
    
            return sw.ToString();
        }
    }
    

    And consume it like this:

    class Program
    {
        static void Main(string[] args)
        {
            var anon = new { Name = "Yuval", Age = 1 };
            var result = JsonConvertEx.SerializeObject(anon);
        }
    }
    
    0 讨论(0)
提交回复
热议问题