我有一个以 json 格式返回查询结果的存储过程,我想了解此查询将如何到达我在 ASP.NET 应用程序中的代码。
存储过程:
Select
SUBJECT AS [subject],
STARTDATE AS [start]
ENDDATE AS [end],
ID AS [id]
FROM
SOME_TABLE
FOR JSON PATH
来自存储过程的Json格式:
[
{
"subject": _,
"start": _,
"end":_,
"id":_
},
...]
aspx.cs 代码隐藏
(函数片段)
try
{
if (sqlcon.State == ConnectionState.Closed)
{
sqlcon.Open();
}
SqlCommand sccmd = new SqlCommand("MY_STORED_PROCEDURE", sqlcon);
sccmd.CommandType = CommandType.StoredProcedure;
sccmd.Parameters.AddWithValue("@value1", valueID);
sccmd.Parameters.AddWithValue("@value2", valueID);
SqlDataReader sdrreader = sccmd.ExecuteReader();
while (sdrreader.Read())
{
// lost on what to do here
}
sdrreader.Close();
}
catch (Exception ex){}
finally { sqlcon.Close(); }
我想将这个 json 响应存储在我后面的代码中,但我不知道如何。在制作响应 json 之前,我使用 SqlDataReader
和 Read()
遍历每条记录,但是如果响应现在是 json,这将如何工作;是否有另一个专门处理 json 响应的类?
请澄清!
最佳答案
安装 JSON.NET通过 NuGet。
创建一个代码模型来镜像您的 json。
public class JsonModel { public int id {get;set;} public DateTime start {get;set;} public DateTime end {get;set;} public string subject {get;set;} }
从数据库中获取 json 编码的数据
string json = String.Empty; using (SqlConnection connection = new SqlConnection("... your connection string ...") { connection.Open(); using (SqlCommand command = new SqlCommand("SELECT FROM... FOR JSON PATH", connection) { json = command.ExecuteScalar(); } }
将其反序列化为您的模型
var JsonModel model = JsonConvert.DeserializeObject<JsonModel>(json);
喝龙舌兰酒,吃法加它!
关于c# - 来自 SQL Server 的 json 格式响应如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43108021/