public class NullToEmptyStringResolver : DefaultContractResolver { ////// 创建属性 /// /// 类型 /// 序列化成员 ///protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) { return type.GetProperties() .Select(x => { var property = CreateProperty(x, memberSerialization); property.ValueProvider = new NullToEmptyStringValueProvider(x); return property; }).ToList(); } /// /// /// 小写 /// /// ///protected override string ResolvePropertyName(string propertyName) { return propertyName.ToLower(); } }
public class NullToEmptyStringValueProvider : IValueProvider { private readonly PropertyInfo _memberInfo; ////// 构造函数 /// /// public NullToEmptyStringValueProvider(PropertyInfo memberInfo) { _memberInfo = memberInfo; } ////// /// 获取Value /// /// ///public object GetValue(object target) { var result = _memberInfo.GetValue(target); if (_memberInfo.PropertyType == typeof(string) && result == Convert.DBNull) { result = string.Empty; } return result; } /// /// /// 设置Value /// /// /// public void SetValue(object target, object value) { _memberInfo.SetValue(target, value); } }