码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2019-03-09 14:19:31      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:参数   height   convert   ali   numbers   对象   oca   correct   日期   

在使用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:\t{json1}\r\njson2:\t{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:\t{json}");
    Console.ReadKey();
}
    可以得到目标结果:
技术图片
以上都是针对日期类型的格式化处理,至于其他类型的格式化应该时可以参考以上的。


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

标签:参数   height   convert   ali   numbers   对象   oca   correct   日期   

原文地址:https://www.cnblogs.com/Med1tator/p/95f5a4c3066232a5f44084939c51f966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!