javascript代码实例教程-Json.Net如何在序列化之前修改属性值

发布时间:2019-01-25 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-Json.Net如何在序列化之前修改属性值脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 我们都知道 Json.net 序列话的用法 

 

test test = new Test() { A = "123", B = DateTime.Now, C = DateTime.Now.AddDays(1) };

            string JSON = JsonConvert.SerializeObject(test);

你会发现这一串的代码会生成如下的东西:

 

1

{"A":"123","B":"2014-09-14T19:08:11.8653266+08:00","C":"2014-09-15T19:08:11.8663266+08:00"}

这本身没有什么问题   假如你遇到一个比较扯淡的需求 如下  : 我要 B  跟C  生成的Json字符串不显示时间   我要它显示一个时间差的秒数(int 类型) 我该如何处理

 

之前问过许多人   都没做过这样的需求  也获得了一些建议  比如 修改生成完的字符串  又或者  在实体类里边加两个属性 显示出来

 

这样虽然能解决问题  但是 如果我有十个类 一百个类呢   而且每个类跟每个类的属性名称又不一样。。。想想就觉得可怕  后来果断的放弃了这种想法

 

 

 

我在想有没有一种方法  可以在生成Json串之前 就能把这属性的值修改掉 那岂不是会很美好。。。。啧啧啧

 

 

 

后来查看Json.net的码 还真让我发现了一种方法

 

代码如下:

 

复制代码

class Test

    {

        public string A { get; set; }

 

        public DateTime B { get; set; }

 

        public DateTime? C { get; set; }

    }

    class PRogram

    {

        static void Main(string[] args)

        {

 

            Test test = new Test() { A = "123", B = DateTime.Now, C = DateTime.Now.AddDays(1) };

            JsonConverter jc = new DateConverter();

            string json = JsonConvert.SerializeObject(test, jc);

            Console.WrITeLine(json);

        }

    }

    public class DateConverter : JsonConverter

    {

        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)

        {

            DateTime i = (DateTime)value;

            writer.WriteValue("原来我可以修改Model里DateTime类型的值");

        }

 

        public override object ReadJson(JsonReader reader, TyPE objectType, object existingValue, JsonSerializer serializer)

        {

            throw new NotImplementedException();

        }

 

        public override bool CanConvert(Type objectType)

        {

            if (objectType == typeof(DateTime))

                return objectType == typeof(DateTime);

            else if (objectType == typeof(DateTime?))

                return objectType == typeof(DateTime?);

            else

                return false;

        }

    }

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-Json.Net如何在序列化之前修改属性值全部内容,希望文章能够帮你解决javascript代码实例教程-Json.Net如何在序列化之前修改属性值所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。