c# - 来自 SQL Server 的 json 格式响应如何工作?

标签 c# sql asp.net json

我有一个以 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 之前,我使用 SqlDataReaderRead() 遍历每条记录,但是如果响应现在是 json,这将如何工作;是否有另一个专门处理 json 响应的类?

请澄清!

最佳答案

  1. 安装 JSON.NET通过 NuGet。

  2. 创建一个代码模型来镜像您的 json。

    public class JsonModel {  
        public int id {get;set;}  
        public DateTime start {get;set;}   
        public DateTime end {get;set;}  
        public string subject {get;set;}  
    }  
    
  3. 从数据库中获取 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();
        }
    }
    
  4. 将其反序列化为您的模型

    var JsonModel model = JsonConvert.DeserializeObject<JsonModel>(json);
    
  5. 喝龙舌兰酒,吃法加它!

关于c# - 来自 SQL Server 的 json 格式响应如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43108021/

相关文章:

c# - Sharepoint 访问请求 "Permission"代码

c# - 使用 OGG 视频 block 的实时视频流

c# - 我应该将 EF DBContext 对象保留在其自己的模块中,然后通过 DI 获取它吗?

php - 跨多个表的 SQL 连接

asp.net - 根据视频类别为特定关键字过滤YouTube搜索结果

javascript - 如何通过属性JQuery查找列表元素内部

c# - 用C#制作一个简单的数据库程序

c# - 作为实例属性的静态类

php - Symfony2 TWIG 显示已知 ID 的用户

mysql - SQL - 试图在分组后查找 1's over 0' s 的速率?