[英]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.