zoukankan      html  css  js  c++  java
  • 转载自——Json.net动态序列化以及对时间格式的处理

    关于我工作中对Json处理的东西

    第一:动态序列化类  

    第二:时间格式处理

    通常我们一个类里 可能有十到更多的属性,但是我们序列化通常只需要序列化其中的 三到五个这样的话就会有多余的数据

    如果 我只想序列化   id 跟name如何处理

    这是我找的网上的方法:

    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;
    using Newtonsoft.Json.Serialization;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace CYP.New.WCF.Common.Common
    {
        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();
            }
        }
    }

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    关于Json.net 处理日期格式      看第一张图就知道  Json.net 处理日期格式 这尼玛根本就不是正常人类能看的懂得

    你可能会发现Json.net 里有关于处理日期的东西

    但是这个时候你就会发现   再Json.net的重载里边

            public static string SerializeObject(object value);
            public static string SerializeObject(object value, Formatting formatting);
            public static string SerializeObject(object value, JsonSerializerSettings settings);
            public static string SerializeObject(object value, params JsonConverter[] converters);
            public static string SerializeObject(object value, Formatting formatting, JsonSerializerSettings settings);
            public static string SerializeObject(object value, Formatting formatting, params JsonConverter[] converters);

    你会发现   动态序列化 跟  时间处理的格式不能共存    这个问题 着实让我小小的蛋疼了一把.....

    解决方案:

    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;
    using Newtonsoft.Json.Serialization;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace CYP.New.WCF.Common.Common
    {
        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);
                IsoDateTimeConverter iso = new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
                IList<JsonProperty> listWithConver = new List<JsonProperty>();
                foreach (var item in list)
                {
                    if (props.Contains(item.PropertyName))
                    {
                        if (item.PropertyType.ToString().Contains("System.DateTime"))
                        {
                            item.Converter = iso;
                        }
                        listWithConver.Add(item);
                    }
                }
                return listWithConver;
            }
        }
    }
     

    一些关于Json.net的处理  

    本着对大家有帮助的态度    

    关于Josn.net的下载地址 http://www.codeplex.com/    

    转载自:http://www.cnblogs.com/yesehuaqingqian/p/3934532.html

  • 相关阅读:
    使用相对路径名导入包中子模块
    python中子类使用父类属性
    快速掌握Java8 Stream函数式编程技巧
    灵感来袭,基于Redis的分布式延迟队列(续)
    寻找最长不含有重复字符的子串 示例
    golang学习笔记---函数示例
    golang学习笔记---逐行读取文件示例
    golang学习笔记---int转二进制示例
    golang学习笔记---iota(枚举自增值)
    golang学习笔记 ----container/list包用法
  • 原文地址:https://www.cnblogs.com/ShaYeBlog/p/4050285.html
Copyright © 2011-2022 走看看