• 将Unix时间戳转换为Date、Json属性动态生成反序列化、序列化指定属性


    实体类

    public class Test
    {
        [JsonIgnore]
        public string GetDate
        {
            get
            {
                return GetTime.ToString("yyyy-MM-dd");
            }
        }
        [JsonProperty(PropertyName = "get")]
        [JsonConverter(typeof(UnixDateTimeConverter))]
        public DateTime GetTime { get; set; }
    
        [JsonProperty(PropertyName = "ns")]
        public Dictionary<Int64, string> Ns { get; set; }
    
        [JsonProperty]
        private int Height { get; set; }
    }

    自定义输出JSON类:

    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;
    using Newtonsoft.Json.Serialization;
    public class LimitPropsContractResolver : DefaultContractResolver
    {
        private string[] props = null;
    
        public LimitPropsContractResolver(string[] props)
        {
            this.props = props;
        }
    
        protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
        {
            IList<JsonProperty> list = base.CreateProperties(type, memberSerialization);
    
            //只保留清單有列出的屬性
            return list.Where(p => props.Contains(p.PropertyName)).ToList();
        }
    }

    测试代码:

    var textJson = "{"get":1245736642,"ns":{"123":"秋香","5927":"华安","11232":"小强"}}";
    var model = Newtonsoft.Json.JsonConvert.DeserializeObject<Test>(textJson);
    var settings = new JsonSerializerSettings();
    settings.ContractResolver = new LimitPropsContractResolver("get,ns".Split(','));
    var json = Newtonsoft.Json.JsonConvert.SerializeObject(model, settings);
    //{"get":1245736642,"ns":{"123":"秋香","5927":"华安","11232":"小强"}}
    var json2 = Newtonsoft.Json.JsonConvert.SerializeObject(model);
    //{"get":1245736642,"ns":{"123":"秋香","5927":"华安","11232":"小强"},"Height":0}
  • 相关阅读:
    进度条功能
    网络编程
    并发编程
    UUID
    serverless 近期热度
    力扣 98. 验证二叉搜索树
    循环中多线程参数为空bug
    从头解决PKIX path building failed
    国内jenkins搭建不再龟速的方式
    CoachAI 2019年12月~2020年3月实习总结
  • 原文地址:https://www.cnblogs.com/linmilove/p/9728128.html
Copyright © 2020-2023  润新知