如何使用 c# Web API 检索返回值中不带单词 "table" 的存储过程数据



我正在尝试使用以下代码拉取一些数据库行以通过 api 使用:

DataSet ds = new DataSet();
using (SqlConnection con = new SqlConnection("data source=.; database=GiveTradeApp; integrated security=true;"))
{
    SqlCommand cmd = new SqlCommand("sp_get_products_by_user", con);
    cmd.Parameters.Add("user_id", SqlDbType.Int).Value = id;
    cmd.CommandType = CommandType.StoredProcedure;
    con.Open();
    SqlDataAdapter adp = new SqlDataAdapter();
    adp.SelectCommand = cmd;
    adp.Fill(ds);
}
var message = Request.CreateResponse(HttpStatusCode.OK, ds);
return message;

一切都很好,除了当我尝试通过邮递员调用函数时,我得到了 json 结果格式:

{
  "Table": [
    {
      "some row": "some value",
      "some row": "some value"
    },
    {
      "another row": "another value",
      "another row": "another value"
    }
  ]
}

我可以像这样检索它吗:

{
  {
    "some row": "some value",
    "some row": "some value"
  },
  {
    "another row": "another value",
    "another row": "another value"
  }
}

使用以下方法获取JSON格式的数据

方法 1 :

首先,我们需要下载 JSON.Net DLL。我们可以从 Nuget.org 下载它,然后将 Newtonsoft.JSON 命名空间导入我们的页面,如以下代码所示。JSON.NET 是一种流行的 .NET 高性能 JSON 框架。

using Newtonsoft.JSON;  

public string DataTableToJSONWithJSONNet(DataTable table)
{  
   string JSONString=string.Empty;  
   JSONString = JSONConvert.SerializeObject(table);  
   return JSONString;  
}  

方法2 :

public static string DataTableToJSONWithStringBuilder(DataTable table)
    {
        var JSONString = new StringBuilder();
        if (table.Rows.Count > 0)
        {
            JSONString.Append("[");
            for (int i = 0; i < table.Rows.Count; i++)
            {
                JSONString.Append("{");
                for (int j = 0; j < table.Columns.Count; j++)
                {
                    if (j < table.Columns.Count - 1)
                    {
                        JSONString.Append(""" + table.Columns[j].ColumnName.ToString() + "":" + """ + table.Rows[i][j].ToString() + "",");
                    }
                    else if (j == table.Columns.Count - 1)
                    {
                        JSONString.Append(""" + table.Columns[j].ColumnName.ToString() + "":" + """ + table.Rows[i][j].ToString() + """);
                    }
                }
                if (i == table.Rows.Count - 1)
                {
                    JSONString.Append("}");
                }
                else
                {
                    JSONString.Append("},");
                }
            }
            JSONString.Append("]");
        }
        return JSONString.ToString();
    }  

方法 3 :

 public string DataTableToJSONWithJavaScriptSerializer(DataTable table) 
 {  
    JavaScriptSerializer jsSerializer = new JavaScriptSerializer();  
    List < Dictionary < string, object >> parentRow = new List < Dictionary < string, object >> ();  
    Dictionary < string, object > childRow;  
    foreach(DataRow row in table.Rows) 
    {  
        childRow = new Dictionary < string, object > ();  
        foreach(DataColumn col in table.Columns) 
        {  
            childRow.Add(col.ColumnName, row[col]);  
        }  
        parentRow.Add(childRow);  
    }  
    return jsSerializer.Serialize(parentRow);  
}  

并将数据集传递为

 String JsonResult = DataTableToJSONWithJSONNet(ds.Tables[0])
 var message = Request.CreateResponse(HttpStatusCode.OK, JsonResult );
    return message;

最新更新