将null反序列化为gson

时间:2017-06-21 15:26:19

标签: java android gson retrofit rx-java

我有一个awebservice类的旧实现,它使用retrofit1和rxjava1,只是一个很难处理,所以从头开始编写一个新的。

对API请求的每个响应都包含以下对象

{
  "status":200,
  "payload": {}
}

我通过简单地将每个响应包装到一个通用对象中来绕过信封问题,并且在访问有效负载时,我可以通过调用getter轻松地做到这一点

class BaseResponse<T> {

  int status;
  T payload;

  public T getPayload(){
    return payload;
  }

}

我们的想法是将此BaseResponse<T>变为Observable<T>,然后致电map {it.payload}以便在其他地方使用

interface API {

  @Body("blablabla")
  Observable<BaseResponse<SomeResponse>> someCall(@Body SomeRequest request);

}


public Observable<SomeResponse> someCall(SomeRequest request){

  return api.someCall(request)
    .map( response -> response.payload)

}

现在我遇到了一个问题。有一些API请求,其中responsebody被定义为空。我将这些空响应体定义为class EmptyResponse {}

问题是我得到了像这样的空体

{
  "status":200,
  "payload":null
}

现在问题是payload为空且rxjava2不想要空值。

有没有办法让GSON将null反序列化为EmptyResponse类型的对象?请注意,这仅适用于记录为返回空响应实体的调用,如果调用具有已记录的主体,则调用无法返回调用

0 个答案:

没有答案