gpt4 book ai didi

json - 使用 Refit 调用 API 并反序列化为动态

转载 作者:行者123 更新时间:2023-12-01 01:10:03 29 4
gpt4 key购买 nike

我正在使用 Refit 调用 REST 服务,我想反序列化作为动态类型返回的 JSON。

我尝试将接口(interface)定义为

[Get("/foo")]
Task<dynamic> GetFoo();

但调用超时。

我知道我可以反序列化为这样的动态

var mockString = "{ title: { name: 'fred', book: 'job'} }";
dynamic d = JsonConvert.DeserializeObject(mockString);

但我不知道要将什么传递给 Refit 以使其执行相同的操作。

另一种选择是让 Refit 传回原始 JSON,这样我就可以自己反序列化它,但我也看不到这样做的方法。

有什么想法吗?

最佳答案

Refit 在后台使用 JSON.NET,因此任何与之配合使用的反序列化都将与 Refit 配合使用,包括 dynamic 。您描述的界面完全正确。

这是一个真实的工作示例:

public interface IHttpBinApi
{
[Get("/ip")]
Task<dynamic> GetIp();
}

var value = await RestService.For<IHttpBinApi>("http://httpbin.org").GetIp();

如果您使用的是 iOS 和 Refit 4+,您可能会看到此错误:https://github.com/paulcbetts/refit/issues/359

正如 Steven Thewissen 所说,您可以使用 Task<string>作为您的返回类型(或 Task<HttpResponseMessage> ,甚至 Task<HttpContent> )来接收原始响应并反序列化自己,但您不必这样做——Refit 的全部意义在于它应该为您省去麻烦。

关于json - 使用 Refit 调用 API 并反序列化为动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46168976/

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