首页 > 解决方案 > .NET 控制器如何将请求正文作为 json 格式解析为对象模型?

问题描述

通常,当我创建 POST 方法时,我的请求正文如下:

{
  "title": "A post request title",
  "body": "A longer body... For example, Italy won the EURO 2021.",
  "created": "2021-05-22T14:56:29.000Z",
  "updated": "2021-05-22T14:56:28.000Z"
}

但是在控制器中,我们只有一个这样的方法签名:

[HttpPost]
public void UpdateSomething([FromBody]Article article)

文章类:

public class Article
{
    public string Title {get;set;}
    public string Body {get;set;}
    public DateTime Created {get;set;}
    public DateTime Updated {get;set;}
}

我不知道 .NET 控制器如何将 JSON 格式(尤其是 DateTime 格式)解析为 Article 对象模型。

标签: c#.netasp.net-mvc

解决方案


它在 ASP.NET 中称为模型绑定。

您可以在这篇 MSDN 文章https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-5.0中获得深入的详细信息

如果需要,您甚至可以自定义它,如此处所述https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/custom-model-binding?view=aspnetcore-5.0

您提供的 DateTime 看起来像 ISO 8601 格式。但是 ASP.NET 模型绑定可以灵活地使用日期格式。


推荐阅读