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 夜色、花清浅
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。