• 使用JSON.NET实现对象属性的格式化的自定义


    在使用JSON.NET序列化对象时,希望能够对一些属性字段的格式自定义处理,经常遇到的便是日期格式的自定义,下面就给出例子。
    如有一个Person类,实例化Person对象时,希望BirthDate的格式结果为“yyyy/MM//dd”或“yyyy-MM-dd”:
    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public DateTime BirthDate { get; set; }
    }
    第一种方法:
        给JsonConvert.SerializeObject的方法传入自定义的格式化参数:
    static void Main(string[] args)
    {
        var me = new Person
        {
            Name = "Medit Ding",
            Age = 27,
            BirthDate = DateTime.Parse("1992-11-13")
        };
    
        var json1 = JsonConvert.SerializeObject(me);
        var json2 = JsonConvert.SerializeObject(me, new IsoDateTimeConverter { DateTimeFormat = "yyyy/MM/dd" });
    
        Console.WriteLine($"json1:	{json1}
    json2:	{json2}");
        Console.ReadKey();
    }
    可以得到目标结果:

    第二种方法:
        给目标属性添加自定义格式化特性:
    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    
        [JsonConverter(typeof(DateTimeConverter),"yyyy/MM/dd")]
        public DateTime BirthDate { get; set; }
    }
    
    class DateTimeConverter : IsoDateTimeConverter
    {
        public DateTimeConverter()
            :base()
        {
            //Default datetime format
            DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
        }
    
        public DateTimeConverter(string format)
            :base()
        {
            DateTimeFormat = format;
        }
    }
    
    ....
    static void Main(string[] args)
    {
        var me = new Person
        {
            Name = "Medit Ding",
            Age = 27,
            BirthDate = DateTime.Parse("1992-11-13")
        };
        
        var json = JsonConvert.SerializeObject(me);
    
        Console.WriteLine($"json:	{json}");
        Console.ReadKey();
    }
        可以得到目标结果:
    以上都是针对日期类型的格式化处理,至于其他类型的格式化应该时可以参考以上的。


  • 相关阅读:
    小三角 + 右箭头【纯css】
    小程序自定义弹窗【解决点透问题】
    分页存储过程
    SQL如何用一条语句批量修改表中不同数据
    Dapper批量更新
    vue中 $event 的用法--获取当前父元素,子元素,兄弟元素
    T-sql语句查询执行顺序
    Lucene入门
    Spring Boot入门
    SSM-Spring一些知识点
  • 原文地址:https://www.cnblogs.com/Med1tator/p/95f5a4c3066232a5f44084939c51f966.html
Copyright © 2020-2023  润新知