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对象应该包含{}
。