java - 使用 Retrofit/GSON 如何处理有时为空而有时为空的响应

标签 java android json gson retrofit

我正在使用 GSON 进行改造。我正在连接的 Web 服务有时会向客户端返回一个空的负载。我不是这样 build 的。问题在于,当 GSON 尝试解析空负载时,这会导致 json 解析异常。我怎么能处理这个?有没有办法使回调具有空模型对象?

例如服务器响应可能是“”或者它可能是:

{
"foo":{"id":"123","description":"abcd"}
}

我在 java 中也有:

@Data // This comes from lombok to generate setter,getter,no args constructor...
public class Foo{
 private int id;
 private String description;
}

我的 retrofit 服务如下所示:

public interface MyService{
 @POST("/poorly/designed/api/foo")
 void getFoo(@Header("Authorization") String auth, Callback<Foo> callback);
}

免责声明:我只是打了一个最简单的例子,如果我写的东西在语法上可能不完全正确,我可以原谅我。你明白了。

最佳答案

Retrofit 通常应该消除所有缺失值。您的代码的问题是服务器返回一个对象,其中包含 Foo 而不仅仅是 Foo。尝试添加另一个类

class FooContainer {
    Foo foo;
}

然后让您的 API 调用返回一个 FooContainer 而不是 Foo

关于java - 使用 Retrofit/GSON 如何处理有时为空而有时为空的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33715504/

相关文章:

java - 迭代并显示从文本文件中获取的二维数组中的值

android - 如何在maven上发布一个库项目?

android - 单击 ImageView 时图像不全屏显示

jquery循环遍历json

python - 如何在添加另一个字段时从数据框中传递嵌套的 JSON?

ruby-on-rails - 事件模型序列化程序 - 提高渲染性能

java - 无法从 mapStruct Autowiring Mapper

java - 从 Rest API 返回带有值的键

java - 如何使用可用内存作为参数通过 Guava Cache 缓存数据?

android - Android 中双 SIM 卡设备的手机号码验证