如何从只读基类覆盖JSON字段并改为使用子字段?

我有一个基类(只读),可以从外部API提取数据:

public class Manager {
 // so many fields
 public User 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.class NewManager.class 中,都有名为 user
  • 的字段
  • 我要使用 NewUser.class 的字段名称​​ user ,而不是 User.class

有可能这样做吗?

pjdontcry 回答:如何从只读基类覆盖JSON字段并改为使用子字段?

如果没有严格的要求可以使用GSON,则尝试使用Jackson(ObjectMapper),它可以序列化具有相同字段名称的对象。 (杰克逊好得多,恕我直言)

本文链接:https://www.f2er.com/3169227.html

大家都在问