【问题标题】:Unescape json response in REST API在 REST API 中取消转义 json 响应
【发布时间】:2021-10-27 22:35:06
【问题描述】:

我有一个用 C# 编写的 REST API。方法 DoQuery 向数据库发送查询,并获取 json 作为响应

public async Task<QueryResponseDto> DoQuery(string request)
{
  return await _dbConnection.QuerySingleAsync<QueryResponseDto>("select web.json_request('" + request + "') as response;",commandTimeout:600);
}
...
[HttpPost]
[Route("DoQuery")]
public async Task<string> DoQuery([FromBody] object body)
{
  var r = await _dataService.DoQuery(JsonSerializer.Serialize(body));
  return r.response;
}

当我在数据库中运行查询时,我会得到这样的正确 json 答案

[
   {
      "contractor":{
         "ek2id":"91707d21-50f3-4aa4-8209-e80b963da99d",
         "externalids":[
            {
               "externalsource":"SBL",
               "externalid":"1-4OB8C75"
            }
         ]
      }
   }
]

但是当我从 PostMan 运行方法 DoQuery 时,我得到了这样的转义响应

"[{\"contractor\":{\"ek2id\":\"91707d21-50f3-4aa4-8209-e80b963da99d\",\"externalids\":[{\"externalsource\":\"SBL\",\"externalid\":\"1-4OB8C75\"}]}}]"

如何从 REST API 获得正常的非转义响应?

【问题讨论】:

标签: c# json rest


【解决方案1】:

当您查询数据库时,它会在显示输出时为您格式化 JSON。数据库中的实际值可能是某种 UTF8 或类似编码。

如果转义导致问题,您可以尝试在字符串中存储引号的实际 UTF8 值。但在这两种情况下,您都需要对响应进行编码。

【讨论】:

    猜你喜欢
    • 2017-01-21
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 2021-05-10
    相关资源
    最近更新 更多