使用 .Net Core API 进行元组序列化

Mar*_*rko 6 serialization .net-core asp.net-core

我无法序列化元组。我创建一个模板 VS2019 .Net Core API 项目并将控制器替换为:

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    [HttpGet]
    public List<(int number, string text)> Get()
    {
        var x = new List<(int number, string text)>
        {
            (1, "one"),
            (2, "two"),
            (3, "three")
        };
        return x;
    }

    /*[HttpGet]
    public List<string> Get()
    {
        var x = new List<string>
        {
            "one",
            "two",
            "three"
        };
        return x;
    }*/
}
Run Code Online (Sandbox Code Playgroud)

调用时,第一个方法将返回:[{},{},{}] 第二个方法(未注释时):["one","two","three"]

为什么元组没有序列化?这个例子很容易重现。

mj1*_*313 -1

您需要使用Newtonsoft.Json序列化。从 Nuget 安装软件包:

Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson -Version 3.1.9
Run Code Online (Sandbox Code Playgroud)

并使用以下代码对其进行序列化:

var y = JsonConvert.SerializeObject(x);
Run Code Online (Sandbox Code Playgroud)