Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 升级到3.1后,ASP.NET核心未绑定正文中的参数_C#_Asp.net Core_Json Serialization - Fatal编程技术网

C# 升级到3.1后,ASP.NET核心未绑定正文中的参数

C# 升级到3.1后,ASP.NET核心未绑定正文中的参数,c#,asp.net-core,json-serialization,C#,Asp.net Core,Json Serialization,我刚刚将一个ASP.NET核心项目从2.2升级到3.1,现在我的模型绑定不适用于POST请求。我了解到.NET Core 3中默认的JSON序列化程序从Newtonsoft.JSON更改为System.Text.JSON。这可能是原因吗 我的动作和课堂是这样的 [HttpPost] public IActionResult Foo([FromBody]Bar req) 对。此错误的原因是新的JSON库 由于某些原因,System.Text.Json不填充字段,它只填充属性。因此,您需要更改类定

我刚刚将一个ASP.NET核心项目从2.2升级到3.1,现在我的模型绑定不适用于POST请求。我了解到.NET Core 3中默认的JSON序列化程序从Newtonsoft.JSON更改为System.Text.JSON。这可能是原因吗

我的动作和课堂是这样的

[HttpPost]
public IActionResult Foo([FromBody]Bar req)

对。此错误的原因是新的JSON库

由于某些原因,
System.Text.Json
不填充字段,它只填充属性。因此,您需要更改类定义
Bar
以使用属性

public class Bar
{
    public string Fiz { get; set; }
    public int Buzz { get; set; }
}

序列化过程使用setter,因此不能忽略它们。

是。此错误的原因是新的JSON库

由于某些原因,
System.Text.Json
不填充字段,它只填充属性。因此,您需要更改类定义
Bar
以使用属性

public class Bar
{
    public string Fiz { get; set; }
    public int Buzz { get; set; }
}

序列化过程使用setter,因此不能忽略它们。

我只想指出,如果修改模型不是您的选择,那么您可以重新添加JSON.NET支持

只需安装以下nuget软件包:

Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
然后在startup.cs中添加MVC,执行以下操作:

services.AddMvc().AddNewtonsoftJson();
然后回到使用JSON.NET,它是用于.NETCore2.X项目的序列化程序


我只想指出,如果修改模型不是您的选择,那么您可以重新添加JSON.NET支持

只需安装以下nuget软件包:

Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
然后在startup.cs中添加MVC,执行以下操作:

services.AddMvc().AddNewtonsoftJson();
然后回到使用JSON.NET,它是用于.NETCore2.X项目的序列化程序


幸运的是,由于get和set字段和属性的语法相同,因此可以在不更改代码中任何其他内容的情况下完成此修复。幸运的是,此修复可以在不更改代码中任何其他内容的情况下完成,因为get和set字段和属性的语法相同。如果您怀疑它是JSON序列化程序,您可以重新安装Newtonsoft JSON我需要做些什么才能使ASP框架使用其他JSON序列化吗?是的,您需要安装nuget软件包并像
services.AddControllers().AddNewtonsoftJson()那样添加它,请检查。如果您怀疑它是JSON序列化程序,您可以将Newtonsoft JSON安装回。我需要做些什么才能使ASP框架使用此其他JSON序列化?是的,您需要安装nuget包并像
services.AddControllers().AddNewtonsoftJson()那样添加它,签出。