繁体   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