using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; namespace IRaCIS.Core.API { public class NullToEmptyStringResolver : DefaultContractResolver { /// /// 创建属性 /// /// 类型 /// 序列化成员 /// //protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) //{ // IList properties = base.CreateProperties(type, memberSerialization); // foreach (var jsonProperty in properties) // { // jsonProperty.DefaultValue = new NullToEmptyStringValueProvider(jsonProperty); // } // return properties; //} protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) { IList properties = base.CreateProperties(type, memberSerialization); var list= type.GetProperties() .Select(p => { var jp = base.CreateProperty(p, memberSerialization); jp.ValueProvider = new NullToEmptyStringValueProvider(p); return jp; }).ToList(); var uu = list.Select(t => t.PropertyName).ToList(); //获取复杂对象属性 properties = properties.TakeWhile(t => !uu.Contains(t.PropertyName)).ToList(); list.AddRange(properties); return list; } } }