在C#中为Json数组分配一个数组名称

时间:2016-09-18 20:35:57

标签: c# arrays 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 个答案:

答案 0 :(得分:1)

只需更改序列化代码,如下所示....

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

BTW:items:[...]不是有效的json,应该是{items:[...]}