• 使用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();
    }
        可以得到目标结果:
    以上都是针对日期类型的格式化处理,至于其他类型的格式化应该时可以参考以上的。


  • 相关阅读:
    sql 循环表中记录
    asp.net 上传XML,txt 直接读取文件内容
    两个表join 连接,去掉重复的数据
    图片横向显示
    接口测试
    find 命令
    Python 面向对象编程
    python之装饰器、生成器、内置函数、JSON
    python 之常用模块
    python 之函数
  • 原文地址:https://www.cnblogs.com/Med1tator/p/95f5a4c3066232a5f44084939c51f966.html
Copyright © 2020-2023  润新知