gpt4 book ai didi

c# - 在 RestSharp 中优雅地处理一个空的 json 对象

转载 作者:可可西里 更新时间:2023-11-01 09:13:50 36 4
gpt4 key购买 nike

我有以下代码:

public void GetJson()
{
RestRequest request = new RestRequest(Method.GET);

var data = Execute<Dictionary<string, MyObject>>(request);
}

public T Execute<T>(RestRequest request) where T : new()
{
RestClient client = new RestClient(baseUrl);
client.AddHandler("text/plain", new JsonDeserializer());

var response = client.Execute<T>(request);

return response.Data;
}

问题是有时响应将是一个空的 json 数组 []。当我运行这段代码时,出现以下异常:无法将类型为“RestSharp.JsonArray”的对象转换为类型为“System.Collections.Generic.IDictionary`2[System.String,System.Object]”。

有没有办法优雅地处理这个问题?

最佳答案

我自己通过以下方式解决了类似的问题。我曾尝试使用自定义反序列化器(因为我要反序列化为一个复杂的对象),但最终以下内容要简单得多,因为它只适用于我提出的多种请求中的一种。

request.OnBeforeDeserialization = (x =>
{
x.Content = x.Content.Replace("[]", "{}");
});

在我为这个特定请求构造请求对象的地方,我使用了 OnBeforeDeserialization 属性来设置一个回调,用 {} 替换不正确的 [] 。这对我有用,因为我知道我在 x.Content 的其余部分返回的数据永远不会包含 [] 除非在这种特殊情况下,即使在值中也是如此.

这可能对其他人有帮助,但一定要小心使用。

关于c# - 在 RestSharp 中优雅地处理一个空的 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11513935/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com