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/                                                                                               -------------Make  by  夜色、花清淺

                                                                                         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM