【发布时间】:2022-02-15 15:10:18
【问题描述】:
我正在使用一个将 json 数据作为字符串返回的 API。那就是它的返回类型是Task<string>。通常 API 返回一个 Response 类的对象,然后由 dot NET 序列化。但在这种情况下,API 返回 Response 类的序列化版本。
我正在尝试使用 RestSharp->RestClient 使用此 API。在 RestClient 方法 ExecutePostAsync
_restClient.ExecutePostAsync<Response>(request)
现在我面临的问题是 API 响应返回的 json 字符串格式为 "{<json-fields>}",但当接收到 RestClient 时,格式为 \"{<json-fields>}\"。那就是添加转义字符。因此,RestClient 用于序列化和反序列化的 NewtonSoftJSON 会出现错误,Error converting \"{<json-fields>}\" to Response class。
当我对 RestResponse 执行验证时,我还需要来自 RestClient 的原始 RestResponse。因此,不能这样做,将响应作为字符串获取并反序列化。那就是我不想这样做,
var restResponse = _restClient.ExecutePostAsync<string>(request);
var data = Deserialize(restResponse.Data);
因为这只会给我 Response 类的对象,但我需要 RestResponse
在这种情况下我该怎么办?
【问题讨论】:
-
你试过这个 SO answer?
-
这里的问题是ExecutePostAsync本身反序列化了RestResponse的Content字段中的数据并填充到RestResponse的Data字段中,而Content字段中的字符串是转义字符串,所以无法反序列化。我希望这个操作能正常工作。由于我在问题中提到的原因,我不想手动反序列化响应中的数据。
标签: c# .net-core json.net restsharp