[英]JSON Object Empty when is Serialize it C#?
我正在使用以下代码
public class GetTabelRealizari : ControllerBase
{
public class Realizare
{
String user;
String denumire;
String incasari;
public Realizare(String user, String denumire, String incasari)
{
this.user = user;
this.denumire = denumire;
this.incasari = incasari;
}
public String getUser()
{
return user;
}
public void setUser(String user)
{
this.user = user;
}
public String getDenumire()
{
return denumire;
}
public void setDenumire(String denumire)
{
this.denumire = denumire;
}
public String getIncasari()
{
return incasari;
}
public void setIncasari(String incasari)
{
this.incasari = incasari;
}
}
[HttpPost]
public string Post([FromBody] string[] value)
{
//SSMS connection
string connectionString = "Data Source=DESKTOP-QKC0G7V;Initial Catalog=Restaurant_gest;Integrated Security=True";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
List<Realizare> realizari = new List<Realizare>();
double incasari;
String incasariString;
SqlCommand command = new SqlCommand("SELECT Users.Username," +
" Tip_Nota_Plata.Denumire," +
" sum(Nota_plata.Suma) as Incasari" +
" from Users" +
" INNER JOIN Nota_plata" +
" INNER JOIN Comandas" +
" ON Nota_plata.Id_comanda = Comandas.Id" +
" ON Comandas.User_Id = Users.Id" +
" INNER JOIN Tip_Nota_Plata" +
" ON Tip_Nota_Plata.Id = Nota_plata.Id_tip_nota" +
" Group by Username, Tip_Nota_Plata.Denumire", connection);
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
incasari = (double)reader["Incasari"];
incasariString = incasari.ToString("#.##");
realizari.Add(new Realizare(reader["Username"].ToString(), reader["Denumire"].ToString(), incasariString));
}
}
return JsonConvert.SerializeObject(realizari);
//return "salut";
}
}
我收到一个空的 JsonObject。 为什么? [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{ },{},{},{},{},{},{},{},{},{},{},{}]
我一直在努力让它发挥作用,但我做不到。 该列表包含对象,我可以使用 Console.Writeline(realizari[0].getDenumire()) 对其进行测试,并且可以正常工作。 我还可以序列化一个字符串列表,它只是不适用于对象。
因为对象没有可序列化的属性。
我猜测您是基于此的 Java 开发人员:
String user;
public String getUser()
{
return user;
}
public void setUser(String user)
{
this.user = user;
}
C# 具有“属性” ,虽然它们编译为与此非常相似的方法,但 C# 中的语法有点不同。 上述所有代码都可以简化为一个属性:
public String User { get; set; }
然后使用也变得更简单,允许分配而不是调用方法:
someObject.User = someUser;
如果您想向 getter/setter 添加逻辑,可以将上面的“自动实现的属性”扩展为手动属性:
private string user;
public string User
{
get { return user; }
set { user = value; }
}
get
和set
语法仍然告诉编译器这是一个属性,但在这些块中,您可以编写任何您喜欢的方法逻辑。 (在 setter 中, value
是分配给属性的值的关键字。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.