当前位置: 首页 > news >正文

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

 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);
        }
    }

 

 

转载于:https://www.cnblogs.com/FanTaoLin/p/10081891.html

相关文章:

  • 用hexo在本地搭建自己的博客
  • Issue/bug track system选型和使用
  • SSRS----关于图表参考线(平均线)的添加
  • 解读设计模式----装饰模式(Decorator Pattern)
  • C语言博客作业04--数组
  • Frame-Relay的配置
  • [Xcode 实际操作]九、实用进阶-(13)调用相机并获取拍摄后的图片
  • Django学习笔记5
  • C语言程序设计 冒泡排序简介
  • css三大特性
  • 对Singleton的实现方法做一个总结
  • Linux 安装python3.4
  • BAT for 循环
  • 使用淘汰的二手设备构建CISCO实验环境
  • [转]使用批处理设置、启动和停止服务
  • [deviceone开发]-do_Webview的基本示例
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • C# 免费离线人脸识别 2.0 Demo
  • scrapy学习之路4(itemloder的使用)
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 微信小程序--------语音识别(前端自己也能玩)
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 用mpvue开发微信小程序
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 带你开发类似Pokemon Go的AR游戏
  • #NOIP 2014# day.1 T2 联合权值
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $ git push -u origin master 推送到远程库出错
  • $.ajax()
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (70min)字节暑假实习二面(已挂)
  • (Git) gitignore基础使用
  • (附源码)计算机毕业设计大学生兼职系统
  • (篇九)MySQL常用内置函数
  • (学习日记)2024.01.19
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET 中 GetProcess 相关方法的性能
  • @Autowired和@Resource装配
  • @GetMapping和@RequestMapping的区别
  • [BZOJ] 3262: 陌上花开
  • [CDOJ 1343] 卿学姐失恋了
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [ESP32 IDF]web server
  • [Firefly-Linux] RK3568 pca9555芯片驱动详解
  • [javaee基础] 常见的javaweb笔试选择题含答案
  • [leetcode]Clone Graph
  • [leetcode]Flatten Binary Tree to Linked List
  • [OpenGL(Win32)] - 3D 轮廓字体
  • [orleans2.1]这是你没玩过的船新版本
  • [Python从零到壹] 五十三.图像增强及运算篇之直方图均衡化处理
  • [rust] 11 所有权
  • [Spring] Spring Boot 生态