繁体   English   中英

问题检索 ASP.NET 核心 REST ZDB974238714CA8DE634A7CE1D08 的 JSON 响应

[英]Issue retrieving JSON response for ASP.NET Core REST API

我参考了以下链接并尝试创建 POC 应用程序:

https://techcommunity.microsoft.com/t5/azure-sql-blog/10k-request-per-second-rest-api-with-azure-sql-dapper-and-json/ba-p/1189675

    [HttpGet("{a}/{b}", Name = "TestMethod")]
    [ProducesResponseType(201)]
    [ProducesResponseType(400)]
    [ProducesResponseType(500)]
    public async Task<JsonElement> TestMethodAsync(long a, long b)
    {
        return await _repo.GetDataAsync(a);
    }

public async Task<JsonElement> GetDataAsync(long a)
{
    JsonDocument result = null;
    const string sql = @"SELECT HC.LeadReviewerEmailAddress, HCRT.ReviewerEmailAddress,
                                ER.PartnerEmailAddress, ER.GroupAuditPartnerEmailAddress, ETM.EmailAddress
                         FROM [EM].[HealthCheck] HC
                         JOIN [EM].[EngagementReview] ER ON ER.EngagementReviewId = HC.EngagementReviewId
                         LEFT JOIN [EM].[HealthCheckReviewTeam] HCRT ON HC.HealthCheckId = HCRT.HealthCheckId
                         LEFT JOIN  [EM].[EngagementTeamMember] ETM ON ETM.EngagementReviewId = HC.EngagementReviewId
                         WHERE HC.HealthCheckId=@a FOR JSON PATH, WITHOUT_ARRAY_WRAPPER";
    var param = new{a}; 

    using (var conn = await _dapperService.CreateConnection())
    {
        var queryResponse = await conn.QueryAsync<string>(sql, param);
        var allTeamMembersForHC = queryResponse.FirstOrDefault();

        if (!string.IsNullOrWhiteSpace(allTeamMembersForHC))
        {
            result = JsonDocument.Parse(allTeamMembersForHC);
        }
    }

    if (result == null)
        result = JsonDocument.Parse("[]");
        
    return result.RootElement;
}

在验证上述方法时,我得到以下响应而不是 JSON 字符串:

{
  "valueKind": 2
}

谁能帮我解决这个问题?

使用 FOR JSON 时,结果集只有一列一行,因此您必须使用方法ExecuteScalarAsync而不是QueryAsync

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM