2016-05-18 3 views
0

Ich arbeite auf asp.net webAPi, ich habe eine LoanInfo-Klasse erstellt, die die Werte in einer Funktion gesetzt sind und ich legte schließlich die LoanInfo in eine Liste. Ich möchte alle Werte der LoanInfo in Json erhalten, aber List gibt immer leere Werte wie [{}, {}] zurück. Was vermisse ich. ist dies die loanInfoWie bekomme ich eine Liste von Objekt zu JSon in webAPi

public class LoanInfo 
     { 

      private String EmpID; 
      private String amount; 


      public LoanInfo(String EmpID,String amount) 
      { 


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

      } 

dies die Methode

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(); 
      } 

     } 

Dank im Voraus ist !!

+0

Haben Sie versuchen, an der Innenseite des 'read' zu suchen, macht es gibt etwas, wenn Sie beobachten' lesen [0] .ToString() '? –

+0

anstelle von 'loanInfo.Add (neue LoanInfo (lesen [0] .ToString(), lesen [1] .ToString())); 'versuchen Sie' loanInfo.Add (neue LoanInfo (read.getString (0), lesen. getString (1))); ' –

+0

Wenn Ihre loanInfo-Variable leer ist, kann es ein Problem beim Lesen von Daten aus der Datenbank sein. Sagen Sie uns, was Sie haben in Variable lesen, in der Weile, wie @ CyrilGandon erwähnt. – CrazyDog

Antwort

2

Der Grund dafür ist, dass Sie private Attribute haben. Wenn die Serialisierung auftritt, kann sie keine privaten Werte lesen. Versuchen Sie, Eigenschaften auf Ihrem DTO statt private Felder zu machen.

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; 
    } 
} 

Ich habe Ihren Code Refactoring, dies versuchen:

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; 
} 
+0

Ich bin sehr Froh, es funktioniert wie ein Zauber !! –

Verwandte Themen