当前位置: 移动技术网 > IT编程>开发语言>.net > Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty

Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty

2018年12月08日  | 移动技术网IT编程  | 我要评论
 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);
        }
    }

 

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网