Java 当一个字段更改名称时,如何解析此数据?

Java 当一个字段更改名称时,如何解析此数据?,java,android,json,gson,retrofit,Java,Android,Json,Gson,Retrofit,我正在尝试使用Json.fromJson制作几个POJO,以将字符串Json解析为POJO 为此,我有以下课程: public class Queue { @SerializedName("reference") @Expose private String reference; @SerializedName("type") @Expose private QueuesTypes type; @SerializedName("des

我正在尝试使用
Json.fromJson
制作几个POJO,以将
字符串Json
解析为POJO

为此,我有以下课程:

public class Queue {

    @SerializedName("reference")
    @Expose
    private String reference;

    @SerializedName("type")
    @Expose
    private QueuesTypes type;

    @SerializedName("desc")
    @Expose
    private String desc;

    @SerializedName("alias")
    @Expose
    private String alias;

    private QueueObjects queueObjects;

}
正如您所看到的,所有对象的符号都少于最后一个,因为在这种情况下,符号是不同的

根据信息,有时该标签应该是
呼叫
,或
whatsapps
推特

这个队列对象可以与最后一个对象具有不同的属性,因为它在响应中被合并,如下所示:

{"success":true,"data":[
    {"reference":"","type":"","desc":"","alias":"","calls":[{fromPhone:'', toPhone:''}]}, 
    {"reference":"","type":"","desc":"","alias":"","whatsapps": [message:'']},
    {"reference":"","type":"","desc":"","alias":"","calls":[fromPhone:'', toPhone:'']},
    {"reference":"","type":"","desc":"","alias":"","calls":[fromPhone:'', toPhone:'']},
    {"reference":"","type":"","desc":"","alias":"","whatsapps": [message:''],}
    {"reference":"","type":"","desc":"","alias":"","fax": [fromFax:'', toFax:'', message:'']}]
所以这是一个:

public class SocketQueueResponse {

    @SerializedName("success")
    @Expose
    private boolean success;

    @SerializedName("data")
    @Expose
    private List<Queue> listQueue;
}
公共类SocketQueueResponse{
@序列化名称(“成功”)
@暴露
私人布尔成功;
@SerializedName(“数据”)
@暴露
私有列表列表队列;
}
问题是如何根据QueueClass中的响应将多个属性与其多个种类的ob对象放在一起

现在我有

公共接口队列对象{ }

和另一个根据响应的类,但问题是如何将符号设置为QueueObject


谢谢。

我认为您应该创建许多不同的子类(一个用于
调用
,一个用于
whatsapps
,等等),然后使用类型适配器确定要反序列化的子类。这篇文章对此策略有一个合理的概述:我有这些类,问题是如何判断要改装还是Gson,最后一个字段是一个特定的对象,并且只对该属性使用特定的解析器;添加QueueCallObjects调用,QueueWhatsappsObjects whatsapps,QueueFAXObjects Fax正如文章所说,你的
反序列化()
方法可以说,例如
if(jsonObject.has(“calls”))返回上下文。反序列化(jsonObject,CallsSubtype.class)
else if(jsonObject.has(“whatsapps”))返回上下文。反序列化(jsonObject,WhatsappSubclass.class)
,等等您的响应JSON字符串无效,例如,一些字段名没有用双引号括起来,一些空字符串应该是
而不是
,JSON数组中的一些JSON对象应该包含
{}