[英]How to override JSON field from read-only base class and use child field instead?
我有一个基础 class(只读)来从外部 API 获取数据:
public class Manager {
// so many fields
public User user;
// ...
}
由于字段用户丢失了一些字段,所以我需要创建新用户 class。
public class NewUser extends com.readonly.User {
public String avatarUrl;
public String fullname;
public String address;
// ....
}
然后我创建NewManager并使用它从 API 中获取数据。
public class NewManager extends com.readonly.Manager {
// so many fields
public NewUser user;
// ...
}
但我得到了错误:
java.lang.IllegalArgumentException: class com.sovannarith.model.NewManager declares multiple JSON fields named user
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:172) ~[gson-2.8.6.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na]
at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na]
at com.google.gson.Gson.fromJson(Gson.java:931) ~[gson-2.8.6.jar:na]
笔记
有可能这样做吗?
如果没有严格要求使用GSON,那么尝试使用Jackson(ObjectMapper),它可以序列化具有相同字段名的对象。 (杰克逊好多了恕我直言)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.