我有以下2个JSON,一个用于登录,另一个用于订购
{
"head": {
"requestCode": "code"
},
"body": {
"reqId": "xyz",
"userName": "xyz",
"passwd": "xyz",
}
}
{
"head": {
"requestCode": "code"
},
"body": {
"reqId": "xyz",
"orderId": "xyz"
}
}
我正在尝试编写java pojo,其中body的head和refId对于每个json是通用的,但body的其他内容是通用的。
就像下面的pojo。现在的问题是GSon不能解析和构建基于嵌套参数化类型的对象。有没有更好的方法来实现它?不是JSON结构不会改变。
波约
public class Base<T extends Body> {
@SerializedName("head")
@Expose
public Head head;
@SerializedName("body")
@Expose
private T body;
}
public class Body {
@SerializedName("clientCode")
@Expose
private String clientCode;
}
public class Head {
@SerializedName("requestCode")
@Expose
public String requestCode;
}
public class Login extends Body {
@SerializedName("userName")
@Expose
public String userName;
@SerializedName("passwd")
@Expose
public String passed;
}
public class Order extends Body {
@SerializedName("orderId")
@Expose
String orderId;
}
1条答案
按热度按时间inb24sb21#
您可以引入两个用于反序列化的
Base
的新子类,例如:class LoginRequest extends Base<Login> { }
个class OrderRequest extends Base<Order> { }
或者,您可以使用Gson的
TypeToken
class来还原序列化参数化的Base
型别。请参阅使用者指南中的Map章节。例如: