c# - 如何从 C# Web API 返回从 SQL Server 存储过程获取 JSON 结果的 JSON 结果?
问题描述
我在 SQL Server 中有一个存储过程,它以 JSON 形式返回结果
从 Web API,我调用存储过程并将结果存储在 SQLDataReader 中。
我现在必须返回 JSON 结果。
SqlDataReader reader = cmd.ExecuteReader()
我必须将存储过程在阅读器中返回的 JSON 字符串转换为对 API 请求的 JSON 响应
我试过这个
using (SqlDataReader reader = cmd.ExecuteReader())
{
DataTable dataTable = new DataTable();
dataTable.Load(reader);
return JsonConvert.SerializeObject(dataTable);
}
我得到的结果是
"[{\"JSON_F52E2B61-18A1-11d1-B105-00805F49916B\":\"[{\\\"ID\\\":2,\\\"StateCode\\\":42,\\\"CarrierID\\\":1,\\\"Code\\\":\\\"BI\\\",\\\"Type\\\":6,\\\"Name\\\":\\\"Bodily Injury\\\",\\\"Description\\\":\\\"Bodily Injury\\\",\\\"Priority\\\":2,\\\"IsActive\\\":true,\\\"EffectiveDate\\\":\\\"2016-11-03T00:00:00\\\",\\\"CreatedBy\\\":\\\"Admin\\\",\\\"CreatedDate\\\":\\\"2016-11-03T00:00:00\\\",\\\"ModifiedBy\\\":\\\"Admin\\\",\\\"ModifiedDate\\\":\\\"2016-11-03T00:00:00\\\"},{\\\"ID\\\":3,\\\"StateCode\\\":42,\\\"CarrierID\\\":1,\\\"Code\\\":\\\"PD\\\",\\\"Type\\\":6,\\\"Name\\\":\\\"Property Damage\\\",\\\"Description\\\":\\\"Property Damage\\\",\\\"Priority\\\":3,\\\"IsActive\\\":true,\\\"EffectiveDate\\\":\\\"2016-11-03T00:00:00\\\",\\\"CreatedBy\\\":\\\"Admin\\\",\\\"CreatedDate\\\":\\\"2016-11-03T00:00:00\\\",\\\"ModifiedBy\\\":\\\"Admin\\\",\\\"ModifiedDate\\\":\\\"2016-11-03T00:00:00\\\"},{\\\"ID\\\":4,\\\"StateCode\\\":42,\\\"CarrierID\\\":1,\\\"Code\\\":\\\"PIP\\\",\\\"Type\\\":6,\\\"Name\\\":\\\"Personal Injury Protection\\\",\\\"Description\\\":\\\"Personal Injury Protection\\\",\\\"Priority\\\":4,\\\"IsActive\\\":true,\\\"EffectiveDate\\\":\\\"2016-11-03T00:00:00\\\",\\\"CreatedBy\\\":\\\"Admin\\\",\\\"CreatedDate\\\":\\\"2016-11-03T00:00:00\\\",\\\"ModifiedBy\\\":\\\"Admin\\\",\\\"ModifiedDate\\\":\\\"2016-11-03T00:00:00\\\"},{\\\"ID\\\":5,\\\"StateCode\\\":42,\\\"CarrierID\\\":1,\\\"Code\\\":\\\"APIP\\\",\\\"Type\\\":6,\\\"Name\\\":\\\"Additional PIP\\\",\\\"Description\\\":\\\"Additional PIP\\\",\\\"Priority\\\":5,\\\"IsActive\\\":true,\\\"EffectiveDate\\\":\\\"2016-11-03T00:00:00\\\",\\\"CreatedBy\\\":\\\"Admin\\\",\\\"CreatedDate\\\":\\\"2016-11-03T00:00:00\\\",\\\"ModifiedBy\\\":\\\"Admin\\\",\\\"ModifiedDate\\\":\\\"2016-1
解决方案
我发现这个解决方案对我有用,
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (!reader.HasRows)
{
jsonResult.Append("");
}
else
{
while (reader.Read())
{
jsonResult.Append(reader.GetValue(0).ToString());
}
}
var response = this.Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(jsonResult.ToString(), Encoding.UTF8, "application/json");
return response;
}
不需要任何 JSON 序列化或反序列化。干净利落!谢谢你们的帮助。
推荐阅读
- selenium - 使用 Selenium 模拟间歇性网络故障
- django - 如何使用卡片上的按钮更改会话值?
- python - PyMC3 无法广播正确的尺寸以进行推理
- reactjs - 使用 React、Redux 和 Express 从 MongoDB 中删除项目
- c# - Stopwatch.GetTimestamp() 在 NodeJS 中的 C# 等效项
- javascript - 正则表达式循环和电话号码
- markdown - Markdown:如何在不写实际数字的情况下制作编号列表
- arduino - 带有舵机、tone() 功能和 RGB LED 的 Arduino
- r - 在 R 中编码多列
- python - 交叉编译python ModuleNotFoundError:模块信息来自哪里?