【问题标题】:how to get list of Object to JSon in webAPi如何在 webAPi 中获取对象到 JSON 的列表
【发布时间】:2016-05-18 12:59:51
【问题描述】:

我正在研究 asp.net webAPi,我创建了一个 LoanInfo 类 这些值是在一个函数中设置的,我最后将 LoanInfo 放在一个列表中。我想在 Json 中获取 LoanInfo 的所有值,但 List 总是返回空值,例如 [{},{}]。我错过了什么。 这是loanInfo

public class LoanInfo
        {

             private String EmpID;
             private String amount;


            public LoanInfo(String EmpID,String amount)
            {


                this.EmpID = EmpID;
                this.amount = amount;

            }

这是方法

 public IEnumerable Get()
        {
            var con = new SqlConnection(sqlConStr);
            List<LoanInfo> loanInfo = new List<LoanInfo>();
            String query = "select EmpID,amount from employeeLoan";
            var cmd = new SqlCommand(query, con);

            try
            {
                con.Open();
                SqlDataReader read = cmd.ExecuteReader();
                while (read.Read())
                {
                    loanInfo.Add(new LoanInfo(read[0].ToString(), read[1].ToString()));
                }

                return loanInfo.ToList();
            }
            catch (Exception ex)
            {

                String a = ex.Message;
                return null;
            }
            finally
            {
                con.Close();
            }

        }

提前致谢!!

【问题讨论】:

  • 你有没有试过看read的内部,如果你看read[0].ToString()它会返回什么吗?
  • 代替loanInfo.Add(new LoanInfo(read[0].ToString(), read[1].ToString()));试试loanInfo.Add(new LoanInfo(read.getString(0), read.getString(1)));
  • 如果你的loanInfo变量为空,可能是从数据库中读取数据的问题。告诉我们你在 read 变量中的内容,就像@CyrilGandon 提到的那样。
  • 它肯定是从数据库中获取值我什至可以在 Visual Studio 中使用断点时看到这些值
  • 您也可以尝试使用名称,例如 'Convert.ToString(read["EmpID"])'

标签: c# asp.net json asp.net-web-api


【解决方案1】:

原因是你有私有属性,那么当序列化发生时,它不能读取私有值。尝试在您的 DTO 上创建属性,而不是私有字段。

public class LoanInfo
{    
     public string EmpID { get; set; }
     public string Amount { get; set; }

    public LoanInfo(string empID, String amount)
    {
        this.EmpID = EmpID;
        this.Amount = amount;
    }
}

我已经重构了你的代码,试试这个:

public IEnumerable<LoanInfo> Get()
{
    List<LoanInfo> loanInfo = new List<LoanInfo>();

    using (var con = new SqlConnection(sqlConStr))
    {
        try
        {
            con.Open();
            var cmd = new SqlCommand("select EmpID, amount from employeeLoan", con);
            SqlDataReader read = cmd.ExecuteReader();
            while (read.Read())
            {
                loanInfo.Add(new LoanInfo(read[0].ToString(), read[1].ToString()));
            }
        }
        catch (Exception ex)
        {
            return null;
        }
        finally
        {
            con.Close();
        }   
    }

    return loanInfo;
}

【讨论】:

    猜你喜欢
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多