Java 如何从只读基类重写JSON字段并改用子字段?

Java 如何从只读基类重写JSON字段并改用子字段?,java,json,Java,Json,我有一个基类(只读)从外部API获取数据: public class Manager { // so many fields public User user; // ... } 由于field user丢失了一些字段,所以我需要创建新的user类 public class NewUser extends com.readonly.User { public String avatarUrl; public String fullname; public Str

我有一个基类(只读)从外部API获取数据:

public class Manager {
 // so many fields
 public User user;
 // ...
}
由于field user丢失了一些字段,所以我需要创建新的user类

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]
注意

  • API的字段名为:user
  • Manager.classNewManager.class中,都有名为user的字段
  • 我想使用NewUser.class的字段名user,而不是user.class

有没有可能做到这一点?

如果使用GSON没有严格的要求,那么尝试使用Jackson(ObjectMapper),它可以序列化具有相同字段名的对象。(Jackson更好,IMHO)

使用super.user访问user.class变量,但您的异常不会消失,因为同一个密钥用户有两个候选用户,您必须更改变量名。@user12047085是的,那么如何重写它呢?我的意思是如何使用同一个字段?