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}
  • 相关阅读:
    vue 开发环境搭建
    签名算法
    MySQL explain执行计划优化
    查看运行时某个java对象占用JVM大小及通过idea查看java的内存占用情况
    jenkins 配置
    CSS布局
    《JavaScript 代码优化指南》
    JavaScript 跨域漫游
    iFrame 功能详解
    粘性的底部布局
  • 原文地址:https://www.cnblogs.com/linmilove/p/9728128.html
Copyright © 2011-2022 走看看