2016-09-18 12 views
0

に配列名を割り当てるC#で、私はこのようになりますJSON配列を持っている:はJSON配列

[{"ticketAmount":5,"state":"Active"},{"ticketAmount":6,"state":"Closed"},{"ticketAmount":1,"state":"Resolve"}] 

私はそれが取得したいそれが必要、割り当てられた変数、その後、JSONを含む配列です(基本的には、配列名を与える)のようになります。

"items":[{"ticketAmount":5,"state":"Active"},{"ticketAmount":6,"state":"Closed"},{"ticketAmount":1,"state":"Resolve"}] 

は私のコード:

public class EntityUserClosed 
{ 
     public int ticketAmount { get; set; } 
     public string loggedDate { get; set; } 
} 

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public void GetUserClosedTickets() 
{ 
    var entites = new List<EntityUserClosed>(); 

    using (SqlConnection con = new SqlConnection(constr)) 
    { 
     using (SqlCommand cmd = new SqlCommand("Select LoggedBy, count(ID) as ticketAmount from Tickets WHERE LoggedDate >=dateadd(day,datediff(day,0,GetDate())- 30,0) AND State = '3' group by LoggedBy")) 
     { 
      var ticketAmount = 0; 
      var loggedBy = string.Empty; 

      cmd.Connection = con; 

      con.Open(); 
      var reader = cmd.ExecuteReader(); 

      if (reader.HasRows) 
      { 
       while (reader.Read()) 
       { 
        ticketAmount = (int)reader["ticketAmount"]; 
        //Convert to JSON format 
        loggedBy = reader["LoggedBy"].ToString(); 

        var entity = new EntityUserClosed 
          { 
           ticketAmount = ticketAmount, 
           loggedDate = loggedBy, 
          }; 
        entites.Add(entity); 
       } 
      } 

      var json = serializer.Serialize(entites); 
      this.Context.Response.ContentType = "application/json; charset=utf-8"; 
      var test = json.Replace("\\", ""); 
      this.Context.Response.Write(test); 
     } 
    } 
} 

私は、このようないくつかの解決策を試してみました次のようになります。

var entity = new List<EntityUserClosed>() 

しかし、その仕組みはわかりません。

おかげ

次のように

答えて

1

は単にところで

var json = serializer.Serialize(new {items=entites}); 

....あなたのシリアル化コードを変更:items:[...]が有効なJSONではありません、それがあるべき{items:[...]}