簡體   English   中英

JSON對象空什么時候序列化它C#?

[英]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; }
}

getset語法仍然告訴編譯器這是一個屬性,但在這些塊中,您可以編寫任何您喜歡的方法邏輯。 (在 setter 中, value是分配給屬性的值的關鍵字。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM