【问题标题】:Return JSON as response from the Web API从 Web API 返回 JSON 作为响应
【发布时间】:2019-03-16 00:26:42
【问题描述】:

我正在尝试查询 SQL 服务器并尝试以 JSON 格式返回响应。我能够得到像

这样的 JSON 响应
[
  {"R_ID":"368203","ROOM":"K2"}, 
  {"R_ID":"368203","ROOM":"K2"}
]

但我希望将响应包装在数据中,例如

{
  "data": [
    {"R_ID":"368203","ROOM":"K2"}, 
    {"R_ID":"368203","ROOM":"K2"}
   ]
}

所以现在我改变了我的模型类

public class DatabaseResult
{
  public int r_id { get; set; }
  public string room { get; set; }
}

public class RootObject
{
  public List<DatabaseResult> data { get; set; }
}

我不确定如何更改控制器以获得预期的响应

connection.Open();
List<DatabaseResult> records = new List<DatabaseResult>();
using (var reader = command.ExecuteReader())
{
  while (reader.Read())
  {
    var row = new DatabaseResult
    {
      request_id = (int)reader["request_id"],
      room = (string)reader["room"],
    };
    records.Add(row);
  }
  return Ok(records);
}

【问题讨论】:

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


    【解决方案1】:

    您可以将records 包装在一个匿名对象中

     return Ok( new {data = records} );
    

    【讨论】:

      【解决方案2】:

      您需要在后端创建相同的模型,然后像这样填充,

      RootObject result = new RootObject();
      
      
       while (reader.Read())
       {
         var row = new DatabaseResult
         {
            request_id = (int)reader["request_id"],
            room = (string)reader["room"],
         };
         records.Add(row);
       }
       result.data = records;
      

      然后返回 result.

      【讨论】:

      • 如果'result.data = records;'会更好在while循环之外
      • 您并不真正需要 - 这是一种方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 2019-02-13
      • 2017-09-13
      • 2020-09-12
      • 1970-01-01
      相关资源
      最近更新 更多