ASP.NET Core WebApi 返回统一格式参数(Json 中 Null 替换为空字符串)
发布日期:2021-09-08 15:09:09 浏览次数:23 分类:技术文章

本文共 2711 字,大约阅读时间需要 9 分钟。

业务场景:

统一返回格式参数中,如果包含 Null 值,调用方会不太好处理,需要替换为空字符串,示例:

{
"response":{
"code":200, "msg":"Remote service error", "result":null }}

替换为:

{
"response":{
"code":200, "msg":"Remote service error", "result":"" }}

具体实现:

using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Mvc.Filters;using Newtonsoft.Json;using Newtonsoft.Json.Serialization;using System;using System.Collections.Generic;using System.Linq;using System.Reflection;public class WebApiResultMiddleware : ActionFilterAttribute{    public override void OnResultExecuting(ResultExecutingContext context)    {        if (context.HttpContext.Request.Path.HasValue)        {            if (context.HttpContext.Request.Path.Value.ToLower().IndexOf(".inside.") < 0)            {                if (context.Result is FileContentResult || context.Result is EmptyResult)                {                    return;                }                if (context.Result is ObjectResult)                {                    var objectResult = context.Result as ObjectResult;                    var settings = new JsonSerializerSettings()                    {                        ContractResolver = new NullToEmptyStringResolver(),                        DateFormatString = "yyyy-MM-dd HH:mm"                    };                    context.Result = new JsonResult(new { data = objectResult.Value }, settings);                }                else                {                    context.Result = new ObjectResult(new { data = new { } });                }            }        }    }}public class NullToEmptyStringResolver : Newtonsoft.Json.Serialization.DefaultContractResolver{    protected override IList
CreateProperties(Type type, MemberSerialization memberSerialization) { return type.GetProperties() .Select(p => { var jp = base.CreateProperty(p, memberSerialization); jp.ValueProvider = new NullToEmptyStringValueProvider(p); return jp; }).ToList(); }}public class NullToEmptyStringValueProvider : IValueProvider{ PropertyInfo _MemberInfo; public NullToEmptyStringValueProvider(PropertyInfo memberInfo) { _MemberInfo = memberInfo; } public object GetValue(object target) { object result = _MemberInfo.GetValue(target); if (result == null) result = ""; return result; } public void SetValue(object target, object value) { _MemberInfo.SetValue(target, value); }}

本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/asp-net-core-webapi-json-convert-empty-string-instead-of-null.html,如需转载请自行联系原作者

转载地址:https://blog.csdn.net/weixin_34326429/article/details/90149664 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:4.3. rpm - RPM Package Manager
下一篇:AjaxPro使用Session出错(AjaxPro "Session"引发了"System.NullReferenceException"类型的异常)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月17日 05时25分42秒