【问题标题】:how to access the data from SQL Server which is in JSON format using ASP.NET WEB API controller如何使用 ASP.NET WEB API 控制器从 SQL Server 访问 JSON 格式的数据
【发布时间】:2022-10-01 01:11:01
【问题描述】:

我在 SQL Server 中创建了一个存储过程,它以 json 格式返回

ALTER PROCEDURE [dbo].[GetAllRoles]
AS
BEGIN
    SELECT * 
    FROM dbo.roles 
    FOR JSON PATH;
END

此存储过程的输出:

[
    { \"role_id\": 101, \"role_description\": \"Trainee\" },      
    { \"role_id\": 102, \"role_description\": \"Lead\" },
    { \"role_id\": 103, \"role_description\": \"Manager\" },
    { \"role_id\": 104, \"role_description\": \"Senior Tester Engineer\" },
    { \"role_id\": 105, \"role_description\": \"Junior Tester Engineer\" },
    { \"role_id\": 106, \"role_description\": \"Senior Developer AEM\" },
    { \"role_id\": 107, \"role_description\": \"Junior Developer AEM\" }
]

我想在 ASP.NET APIController 中访问这个存储过程:

public StringBuilder Get()
{
    var jsonResult = new StringBuilder();
    var connect = new SqlConnection(ConfigurationManager.ConnectionStrings[\"SupplyCon\"].ConnectionString);

    connect.Open();

    SqlCommand cmd = connect.CreateCommand();
    cmd.CommandText = \"GetAllRoles\";
    cmd.CommandType = CommandType.StoredProcedure;

    var reader = cmd.ExecuteReader();

    if (!reader.HasRows)
    {
        jsonResult.Append(\"[]\");
    }
    else
    {
        while (reader.Read())
        {
            jsonResult.Append(reader.GetString(0).ToString());
        }
    }

    return jsonResult;
}

通过邮递员后,我得到以下回应。我期待在 SQL Server 中运行存储过程后得到的相同响应。但是,我得到了一些奇怪的东西。

邮递员的结果:

  • 这有什么奇怪的?

标签: asp.net sql-server asp.net-web-api stringbuilder executereader


【解决方案1】:

您在 Postman 中获得的输出与在数据库中运行该过程所获得的输出相同;它只是格式略有不同。不同之处在于 Postman 中的输出已经转义了所有双引号,因为结果是字符串的一部分。 JSON 解析器(例如 JsonSerializer)会像您的存储过程输出一样读取它。

【讨论】:

    猜你喜欢
    • 2016-05-20
    • 1970-01-01
    • 2019-02-11
    • 2013-09-21
    • 2021-01-19
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2013-03-04
    相关资源
    最近更新 更多