簡體   English   中英

在 ASP.NET MVC 5 C# 中以數組格式返回 JSON 響應

[英]Return JSON response in array format in ASP.NET MVC 5 C#

我想使用 asp.net mvc5 c# 從我的數據庫中返回 JSON 格式。 我嘗試了很多方法,但無法按照我的要求生成數據。 我需要這種格式的 JSON 數組。

{
 "draw":0,
 "recordsTotal":2,
 "recordsFiltered":2, 
 "data":[
          [
            "126",
            "Test Name 1",
            "07.01.2022 11:55 AM",
            "Male"
          ],
          [
            "127",
            "Test Name 2",
            "01.02.2022 11:55 AM",
            "Male"
          ]
       ]
}

而不是這個,我得到給定格式的 output

{
 "draw":0,
 "recordsTotal":2,
 "recordsFiltered":2, 
 "data":[
          {
            "ID":126,
            "Name":"Test Name 1",
            "Date":"07.01.2022 11:55 AM",
            "Gender":"Male"
          },
          {
            "ID":127,
            "Name":"Test Name 2",
            "Date":"01.02.2022 11:55 AM",
            "Gender":"Male"
          }
       ]
}

我的 ASP.NET MVC5 C# 代碼如下

public ContentResult GetDoctor()
        {
            var doctors = db.Doctors.Where(e => e.ID > 0);
            var doct = doctors.Select(c => new
            {
                ID = c.ID + "," +
                "," + c.Name +
                "," + c.Date +
                "," + c.Gender
            }).ToList();
            string students = string.Join("],[", doct.Select(e => e.ID.ToString()));
            students = JsonConvert.SerializeObject(students);
            JsonSerializerSettings hg = new JsonSerializerSettings();
            hg.Formatting = Formatting.Indented;
            hg.TypeNameHandling = TypeNameHandling.None;
            string json = JsonConvert.SerializeObject(doctors.ToList(),hg);
            return Content(json.ToString(), "application/json");
        }

如果需要嚴格使用第一個結構體返回數據,那么output結構體必須是:

    public class Required_Result
    {
        [JsonProperty("draw")]
        public int Draw { get; set; }

        [JsonProperty("recordsTotal")]
        public int RecordsTotal { get; set; }

        [JsonProperty("recordsFiltered")]
        public int RecordsFiltered { get; set; }

        [JsonProperty("data")]
        public List<List<string>> Data { get; set; }
    }

然后我想你從數據庫中恢復的數據是第二種格式:

 public class Doctors_data
    {
        [JsonProperty("ID")]
        public int ID { get; set; }

        [JsonProperty("Name")]
        public string Name { get; set; }

        [JsonProperty("Date")]
        public string Date { get; set; }

        [JsonProperty("Gender")]
        public string Gender { get; set; }
    }

    public class Resume
    {
        [JsonProperty("draw")]
        public int Draw { get; set; }

        [JsonProperty("recordsTotal")]
        public int RecordsTotal { get; set; }

        [JsonProperty("recordsFiltered")]
        public int RecordsFiltered { get; set; }

        [JsonProperty("data")]
        public List<Doctors_data> Data { get; set; }
    }

所以你需要將你的數據轉換成需要的結果格式數據並反序列化

        Resume db = new Resume(); //<--- Populate your data
        Required_Result result = new Required_Result()
        {
            Draw = db.Draw,
            RecordsTotal = db.RecordsTotal,
            RecordsFiltered = db.RecordsFiltered,
            Data = db.Data.Where(e => e.ID > 0).Select(item => new List<string> { item.ID.ToString(), item.Name, item.Date, item.Gender }).ToList()

        };
        string result_string = JsonSerializer.Serialize(result);

您可以使用以下方法:

return Json(new
            {
                draw = draw,
                recordsFiltered = recordsTotal,
                recordsTotal = recordsTotal,
                data = doctors 
            });

從 UI 獲取繪制值。 像這樣:

var draw = Request.Form.GetValues("draw").FirstOrDefault();

醫生是你的名單。

記錄號的值也是從列表中的數據個數中獲取的。

有了這個答案,您可以將數據發送到 UI 並將其加載到datatable中。

我在我的項目中使用這個標准並且它有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM