DotNetCore 3.1 Web Api 空对象响应

byt*_*tez 3 .net-core asp.net-core-webapi

当返回具有公共属性的类实例时,会返回一个空的 JSON 对象 { }。但是,如果我返回动态对象,则会返回预期的响应。我使用的是带有最新补丁的 VS2019。重现步骤,创建 ASP.NET Core Web API 项目并选择 .NET Core 3.1 (LTS) 作为框架。将 WeatherForecastController.cs 的内容替换为我在下面包含的内容并运行该应用程序。

using Microsoft.AspNetCore.Mvc;

namespace WebApplication3.Controllers
{
    public class JsonResponse
    {
        public string Challenge;

        public int Ttl;
    }

    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        public ActionResult Get()
        {
            JsonResponse rsp = new JsonResponse { Challenge = "challenge", Ttl = 1 };
            return Ok(rsp); // returns { }
            //return Ok(new { Challenge = "challenge", Ttl = 1 }); // returns { challenge: "challenge", ttl: 1 }
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

Fei*_*Han 6

尝试修改您的JsonResponse类以使属性包含 agetset访问器的声明,如下所示。

public class JsonResponse
{
    public string Challenge { get; set; }

    public int Ttl { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

正如本文档中有关“序列化行为”所述,默认情况下会忽略字段。

  • 我不确定为什么公共财产需要这样做(在 Core 2.1 中不是问题),但这确实有效。 (2认同)