Web API 返回空 json 数组

Yos*_* G. 2 c# web-services asp.net-web-api

我在运行时跟踪了我的方法(如下)。在代码下方,我在 return 语句之前添加了投资组合列表的调试检查的屏幕截图。我扩展了几个列表条目。正如您所看到的,每个 Portfolio 对象都包含真正的数据 - 数字 Id 和字符串名称。

然而,这就是 Chrome 浏览器或邮递员的返回结果,没有区别。

[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{ },{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}, {}、{}、{}、{}、{}]

所有数据发生了什么?感谢您的帮助!

    // GET: api/Portfolio
    [HttpGet]
    public List<Portfolio> Get()
    {
        List<Portfolio> Portfolios = new List<Portfolio>();

        using (SqlConnection cn = new SqlConnection(conn))
        {
            SqlCommand cmd = cn.CreateCommand();
            cmd.CommandText = sqlSelectPortfolios;
            cn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            Portfolio pf;

            while (rdr.Read())
            {
                pf = new Portfolio
                {
                    id = (int)rdr["PortfolioId"],
                    name = (string)rdr["PortfolioName"]
                };

                Portfolios.Add(pf);
            }
        }

        return Portfolios;
    }
Run Code Online (Sandbox Code Playgroud)

调试:

调试截图

tym*_*tam 8

id需要name是公共的和属性。从 3.0 开始System.Text.Json.JsonSerializer,不序列化字段。

public class Portfolio 
{
public int id {get; set;}
public string name {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

  • 该问题被记录为 [JsonSerializer 应支持字段和属性 #36505](https://github.com/dotnet/corefx/issues/36505) (3认同)