我在android中使用Retrofit而GsonConverterFactory是转换器。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://xxxxxxx.com")
.addConverterFactory(GsonConverterFactory.create())
.build();
我希望用body发送POST请求。
public class MasterRequest
{
}
public class User extends MasterRequest
{
@SerializedName("email")
public String email = null;
}
@POST("{path}")
Call<MasterResponse> registerUser(@Path("path") String path, @Body MasterRequest masterRequest);
path是附加基本URL的URL。
当我在父类引用(MasterRequest)中发送子类(“User”)对象时,转换器显示为空json; “{}”。
但是当我将User类对象发送到registerUser方法下面时,它工作正常。
@POST("{path}")
Call<MasterResponse> registerUser(@Path("path") String path, @Body User user);
如何在父类实例中发送子类对象来创建请求体?
答案 0 :(得分:2)
这是Gson的工作方式。序列化多态对象的最简单方法是使用RuntimeTypeAdapterFactory。您可以找到详细的教程here。与Retrofit配合使用非常好!