【发布时间】:2014-11-10 01:29:51
【问题描述】:
我正在尝试使用 ASP.NET Web API 客户端库(HttpClient 类等)和 ReadAsAsync() 方法在 C# 中创建 Dropbox 的 JSON API 的使用者。
对于大多数方法来说,这样的东西足以满足我的需要:
return this.HttpClient.GetAsync("info").Result.Content.ReadAsAsync<AccountInfo>().Result;
但是,API 有a method to get the metadata, for either a file or a folder(相同的操作)。我希望希望为文件/文件夹提供不同的类,但我不一定知道在调用 API 以获取元数据时会返回哪个类。
如果我直接使用 JSON.NET,我相信我可以指定一个自定义 ContractResolver 来根据内容确定它应该反序列化到哪个类(其中一个数据字段是一个真/假标志,它将告诉我哪个适用)。但是,我看不到任何通过 HttpClient 公开的方法来做到这一点。
所以。在我进行 hacky 回退(反序列化到基类,根据标志重新反序列化到适当的子类)之前,有没有办法让 HttpClient 以编程方式确定 JSON 应该反序列化到哪个类?
【问题讨论】:
标签: c# json asp.net-web-api dropbox-api