首页 > 其他分享 >.Net Core 统一全局处理字符串为Null问题

.Net Core 统一全局处理字符串为Null问题

时间:2023-10-10 09:23:10浏览次数:32  
标签:Core return typeof new memberInfo Net Null public objectType

services.AddControllersWithViews().AddNewtonsoftJson(options =>
            {
                //设置序列化时间格式
                options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
                  
                options.SerializerSettings.ContractResolver = new NullToEmptyStringResolver(); 
            });
public class NullToEmptyStringResolver : DefaultContractResolver
    { 
        protected override JsonConverter ResolveContractConverter(Type objectType)
        {
            if (objectType == typeof(long))
            {
                return new JsonConverterLong();
            }

            if (objectType == typeof(int))
            {
                return new JsonConverterInt();
            }

            if (objectType == typeof(decimal))
            {
                return new JsonConverterDecimal();
            }

            if (objectType == typeof(double))
            {
                return new JsonConverterDouble();
            }

            return base.ResolveContractConverter(objectType);
        }

        protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
        {
            return type.GetProperties().Select(c =>
            {
                var jsonProperty = base.CreateProperty(c, memberSerialization);
                jsonProperty.ValueProvider = new NullToEmptyStringValueProvider(c);
                return jsonProperty;
            }).ToList();
        }
    }

    public class NullToEmptyStringValueProvider : IValueProvider
    {
        private readonly PropertyInfo _memberInfo;

        public NullToEmptyStringValueProvider(PropertyInfo memberInfo)
        {
            _memberInfo = memberInfo;
        }

        public object GetValue(object target)
        {
            var result = _memberInfo.GetValue(target);
            if (_memberInfo.PropertyType == typeof(string) && result == null)
                result = string.Empty;
            return result;
        }

        public void SetValue(object target, object value)
        {
            _memberInfo.SetValue(target, value);
        }
    }

标签:Core,return,typeof,new,memberInfo,Net,Null,public,objectType
From: https://www.cnblogs.com/kkbk/p/17753726.html

相关文章

  • .Net Core 中GUID字符串的几种格式化
    NET下的Guid格式化有如下五种:1.Guid.NewGuid().ToString("N")获取32位不包含“-”号的GUID字符串例如:1c64d58a9e834bfe8d053555d81453d02.Guid.NewGuid().ToString("D")获取32位包含“-”号的GUID字符串,默认格式例如:ae8672ac-a987-43f3-a7c2-ac7b3249ac7b3.Guid.NewGuid().......
  • Essential .NET - C# 7.0:细说元组
    Essential.NET-C#7.0:细说元组作者 MarkMichaelis在去年11月的Connect();专题(msdn.microsoft.com/magazine/mt790178)中,我概述了C#7.0,并介绍了元组。在本文中,我将重新深入探究元组,并全方位地介绍语法选项。首先,让我们来想想下面这个问题:为什么要使用元组?有时,可......
  • 网安周报|Mixin Network 云服务商数据库遭到攻击,涉案金额约 2 亿美元
    1、MixinNetwork云服务商数据库遭到攻击,涉案金额约2亿美元MixinNetwork是一个开源的数字资产点对点交易网络,今天在Twitter上宣布,由于该平台遭受了黑客攻击,存款和取款立即暂停。据报道,该攻击的目标是Mixin云服务提供商的数据库,涉案金额约2亿美元。由于在黑客攻击中损失了大量资......
  • .net 调用webservice 总结
    最近做一个项目,由于是在别人框架里开发app,导致了很多限制,其中一个就是不能直接引用webservice。我们都知道,调用webserivice最简单的方法就是在"引用" 那里点击右键,然后选择"引用web服务",再输入服务地址。确定后,会生成一个app.config里面就会自动生成了一些配置信息。现......
  • .net C# 流量限制令牌桶算法工具类
    流量限制令牌桶算法工具类usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.Threading;usingSystem.Threading.Tasks;namespaceCommon{///<summary>///令牌桶算法工具类///</summary>publicclassTokenB......
  • 电表DLT645转BACnet /IP协议网关
    DLT645、IEC104协议、JAE1939协议和BACnetMS/TP协议都是在智能建筑和楼宇自动化领域中常用的通信协议。为了更好地实现不同系统之间的数据交互,将这三种协议转换为BACnetMS/TP协议的网关越来越受到关注。DLT645、IEC104协议和JAE1939协议与BACnetMS/TP协议之间的转换主要是将源协......
  • BACnet转Modbus协议采集网关
    DNP3.0、Lonworks和KNX是三种在智能建筑和楼宇自动化领域中常用的协议,而Modbus协议是一种在工业自动化领域广泛应用的协议。将DNP3.0、Lonworks、KNX协议转换为Modbus协议在实践中可以提高不同系统之间的互操作性,从而实现更高效和智能的建筑管理。将DNP3.0、Lonworks、KNX协议转换......
  • NetCore Ocelot 之 Cache
    OcelotsupportssomeveryrudimentarycachingatthemomentproviderbytheCacheManagerproject.Thissanamazingprojectthatissolvingalotofcachingproblems.IwouldrecommendusingthispackagetocachewithOcelot.Thefollowingexampleshowsh......
  • Kubernetes 集群 troubleshooting
    Kubernetes集群troubleshooting–陈少文的网站(chenshaowen.com)1、FailedCreatePodSandBox错误Errorresponsefromdaemon:OCIruntimecreatefailed:container_linux.go:380:startingcontainerprocesscaused:process_linux.go:402:gettingthefinalchild'......
  • ControlNet-trt优化总结4:onnx图修改与重建
    ControlNet-trt优化总结4:onnx图修改与重建在这一节中,主要总结网络层面的优化,针对于算子插件优化,主要聚焦于以下几点:修改onnx图,添加不支持的算子插件增加前后处理部分,前后处理导出为onnx图onnx图surgeon原有的graph中存在大量的GN操作,正常fp32的时候没有问题,但是当使用fp16......