【C#】.net core 6.0 MVC返回JsonResult显示API接口返回值不可被JSON反序列化

欢迎来到《小5讲堂》
这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

背景

最近在体验AI应用自定义创建组件功能,组件能够接入自己API接口,
在对接API接口时,平台返回提示API接口返回值不可被JSON反序列化。
因此本篇文章将探索下为什么会出现这个提示,以及如何解决这个问题。

API接口

接口代码

主要是返回

[HttpGet]
[ActionFilterInfo]
public IActionResult GetApi(string name)
{
    return new JsonResult(new { name = $"您输入名字是:{name}" });
}

请求失败

请求失败!错误代码400
在这里插入图片描述

原因排查

经过排查发现,接口返回其实没问题,是api接口地址不对,少了一个api路径。
实际上就是api接口报404错误了,找不到接口,因此会提示上面请求失败。

调通效果

在这里插入图片描述

常见返回类型

在.NET Core 6.0 MVC中,常见的返回类型包括但不限于:

1.ViewResult
用于返回视图页面,通常在控制器方法中使用
return View();来返回一个视图页面。

2.PartialViewResult
用于返回局部视图页面,通过
return PartialView();在控制器方法中返回一个局部视图页面。

3.JsonResult
用于返回JSON格式的数据,通过
return new JsonResult(data);在控制器方法中返回JSON数据。

4.ContentResult
用于返回纯文本内容,通过
return Content(“content”);在控制器方法中返回纯文本内容。

5.RedirectResult
用于执行重定向操作,通过
return Redirect(“url”);在控制器方法中执行重定向操作。

6.RedirectToActionResult
用于重定向到指定的控制器和操作方法,通过
return RedirectToAction(“Action”, “Controller”);在控制器方法中执行重定向到指定的控制器和操作方法。

7.FileResult
用于返回文件内容,通过
return File(“path”, “contentType”, “fileDownloadName”);在控制器方法中返回文件内容。

8.StatusCodeResult
用于返回指定的HTTP状态代码,通过
return StatusCode(200);在控制器方法中返回指定的HTTP状态代码。

这些是.NET Core 6.0 MVC中常见的返回类型,您可以根据具体的业务需求选择合适的返回类型来返回相应的数据或操作结果。

相关文章

【C#】.net core 6.0 MVC返回JsonResult显示API接口返回值不可被JSON反序列化

【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

【C#】约瑟夫原理举例2个代码实现

【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推

【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

.Net Core 中,你可以通过实现一个继承自 `ActionFilterAttribute` 的过滤器来实现全局的日期格式化。具体步骤如下: 1. 创建一个继承自 `ActionFilterAttribute` 的过滤器类,比如 `DateFormatFilter`。 ```csharp public class DateFormatFilter : ActionFilterAttribute { private readonly string _format; public DateFormatFilter(string format) { _format = format; } public override void OnResultExecuting(ResultExecutingContext context) { if (context.Result is ObjectResult objectResult) { objectResult.Value = HandleObject(objectResult.Value); } else if (context.Result is JsonResult jsonResult) { jsonResult.Value = HandleObject(jsonResult.Value); } else if (context.Result is ContentResult contentResult) { contentResult.Content = HandleContent(contentResult.Content); } base.OnResultExecuting(context); } private object HandleObject(object obj) { if (obj == null) { return null; } var objectType = obj.GetType(); if (objectType.IsValueType || objectType == typeof(string)) { return obj; } var properties = objectType.GetProperties(); foreach (var property in properties) { if (property.PropertyType == typeof(DateTime) || property.PropertyType == typeof(DateTime?)) { var value = property.GetValue(obj); if (value != null) { var dateTime = (DateTime)value; property.SetValue(obj, dateTime.ToString(_format)); } } } return obj; } private string HandleContent(string content) { // TODO: 处理 ContentResult 的内容 return content; } } ``` 2. 在 `Startup.cs` 文件中注册过滤器。 ```csharp public void ConfigureServices(IServiceCollection services) { // 注册全局日期格式化过滤器 services.AddMvc(options => { options.Filters.Add(new DateFormatFilter("yyyy-MM-dd HH:mm:ss")); }); } ``` 这样,无论你的 WebApi 返回的数据是 JSON、XML 还是纯文本,都会按照指定的日期格式进行格式化。
评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值