【发布时间】:2012-07-16 23:13:16
【问题描述】:
我有以下代码:
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]”。
有没有办法优雅地处理这个问题?
【问题讨论】:
-
你有机会改变服务器的响应吗?它应该返回一个空对象 {} 而不是空数组 []。即使在 JSON 中,两者也不兼容。
-
我能想到一些简单的技巧,但仅此而已。
-
@Thomas:有人对此有更多想法吗?找到任何答案?我从 Facebook API 得到这个。在某个调用中,当您发送一些无效数据时,它会返回一个字典,告诉您出了什么问题以及原因。否则返回一个空的 json 数组
[]。很烦人。想法? -
@evanmcdonnal:想详细说明这些技巧吗?我在使用 facebook api 时遇到了同样的问题,但我没有想法!