zoukankan      html  css  js  c++  java
  • 将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}
  • 相关阅读:
    jQuery如何获取选中单选按钮radio的值
    java计算出字符串中所有的数字求和?
    java 多线程对List中的数据进行操作
    MongoDB
    CentOS网卡一致性命名
    linux之list_for_each和list_for_each_entry函数
    linux开机启动项
    linux学习参考网站
    linux内核态获取纳秒ns时间
    Linux内核kfifo
  • 原文地址:https://www.cnblogs.com/linmilove/p/9728128.html
Copyright © 2011-2022 走看看