Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty
程序员文章站
2023-12-05 10:05:28
public class NullToEmptyStringResolver : DefaultContractResolver { /// /// 创建属性 /// /// 类型 /// 序列化成员 /// protected override IList Creat... ......
public class nulltoemptystringresolver : defaultcontractresolver { /// <summary> /// 创建属性 /// </summary> /// <param name="type">类型</param> /// <param name="memberserialization">序列化成员</param> /// <returns></returns> protected override ilist<jsonproperty> createproperties(type type, memberserialization memberserialization) { return type.getproperties() .select(x => { var property = createproperty(x, memberserialization); property.valueprovider = new nulltoemptystringvalueprovider(x); return property; }).tolist(); } /// <inheritdoc /> /// <summary> /// 小写 /// </summary> /// <param name="propertyname"></param> /// <returns></returns> protected override string resolvepropertyname(string propertyname) { return propertyname.tolower(); } }
public class nulltoemptystringvalueprovider : ivalueprovider { private readonly propertyinfo _memberinfo; /// <summary> /// 构造函数 /// </summary> /// <param name="memberinfo"></param> public nulltoemptystringvalueprovider(propertyinfo memberinfo) { _memberinfo = memberinfo; } /// <inheritdoc /> /// <summary> /// 获取value /// </summary> /// <param name="target"></param> /// <returns></returns> public object getvalue(object target) { var result = _memberinfo.getvalue(target); if (_memberinfo.propertytype == typeof(string) && result == convert.dbnull) { result = string.empty; } return result; } /// <inheritdoc /> /// <summary> /// 设置value /// </summary> /// <param name="target"></param> /// <param name="value"></param> public void setvalue(object target, object value) { _memberinfo.setvalue(target, value); } }