I've traced through the my method (below) at run time. Below the code I've included a screenshot of the Debug examination of the Portfolios list just before the return statement. I've expanded a couple of the list entries. As you can see, each Portfolio object contains bona fide data - a numeric Id and a string name.
Yet, here's what comes back to the Chrome browser, or postman, no difference.
[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]
What's happening to all the data? Thanks for your help!
// 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;
}
Debug:
1 Answer 1
The id
and name
need to be public and properties. As of 3.0 System.Text.Json.JsonSerializer
does not serialize fields.
public class Portfolio
{
public int id {get; set;}
public string name {get; set;}
}
-
Thank you!! I had them as public but not defined as properties. As soon as I redefined these as properties I got the expected results.Yossi G.– Yossi G.2019年11月10日 03:36:08 +00:00Commented Nov 10, 2019 at 3:36
-
3The issue is logged as JsonSerializer should support field as well as properties #36505tmaj– tmaj2019年11月10日 03:37:41 +00:00Commented Nov 10, 2019 at 3:37
Portfolio
class code?