当前位置: 代码迷 >> 综合 >> .NetCore3.1 json无法正常解析DateTime格式
  详细解决方案

.NetCore3.1 json无法正常解析DateTime格式

热度:81   发布时间:2024-02-23 04:54:20.0

项目场景:

WebApi .netCore 3.1 架构,定义一个添加用户接口。代码如下。

[Route("api/[controller]")]
[ApiController]
public class DateTimeTController : ControllerBase
{
    /// <summary>/// Post 接口,参数为DateTime类型/// </summary>/// <param name="value"></param>[HttpPost]public bool Post([FromBody] UserModel value){
    if (value.ID < 0){
    return false;}// ...业务处理return true;}
}
public class UserModel
{
    public int ID {
     get; set; }public string Name {
     get; set; }public DateTime CreateTime {
     get; set; }
}

问题描述:

调试接口,向接口传以下参数。接口返回状态码 400,报错“The JSON value could not be converted to System.DateTime”。

{"id": 0,"name": "TestName","createTime": "2020-01-01 06:53:10"
}

截图


原因分析:

状态码 400 原因:json无法正常解析DateTime格式。

可是 “2020-01-01 06:53:10” 格式是正确的,为什么无法解析呢?

原来 微软为了提高执行效率,将 System.Text.Json 作为内置 json 处理,但只识别 “2020-01-01T06:53:10” 这种格式 的时间值。


解决方案:

两种解决方案:
?1. 时间类型传参格式 :日期与时间中间添加 T 字符,举例:“2020-01-01T06:53:10”。
?2. 修改程序配置:不推荐
??在startup.cs 配置文件中修改配置。提示:需要安装Microsoft.AspNetCore.Mvc.NewtonsoftJson。

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers().AddNewtonsoftJson();
}
  相关解决方案