在 REST API 中取消转义 json 响应
Posted
技术标签:
【中文标题】在 REST API 中取消转义 json 响应【英文标题】:Unescape json response in REST API 【发布时间】: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 获得正常的非转义响应?
【问题讨论】:
您需要指定编码选项。请看这里:docs.microsoft.com/en-us/dotnet/standard/serialization/… 【参考方案1】:当您查询数据库时,它会在显示输出时为您格式化 JSON。数据库中的实际值可能是某种 UTF8 或类似编码。
如果转义导致问题,您可以尝试在字符串中存储引号的实际 UTF8 值。但在这两种情况下,您都需要对响应进行编码。
【讨论】:
以上是关于在 REST API 中取消转义 json 响应的主要内容,如果未能解决你的问题,请参考以下文章
Rest Template 无法正确解析 json rest api 响应
将大型 JSON 直接从 Java 中的 REST API 响应流保存为文本