我从服务器获得以下类型的JSON。
{
"templates": [
{
"right": [...],
"left": [...],
"available": true,
"text": "some text here",
"configuration": {
"enabled": true,
"trigger": {
"triggerType": "MOVE",
"eventName": "MOVING"
}
}
},
{
"right": [...],
"left": [...],
"available": true,
"text": "some text here",
"configuration": {
"enabled": true,
"trigger": {
"triggerType": "DURATION",
"duration": 300,
"trigger": {
"triggerType": "HALT",
"description": "HAULTING"
}
}
}
}
]
}
JSON有一个对象“配置”,它可能具有“触发器”元素的递归出现。但是这种触发类型根据配置的不同而不同。
我想我已设法为不同类型的触发器创建不同的类,基类为“触发器”,如下所示
public class Trigger{
private String triggerType;
public String getTriggerType() {
return triggerType;
}
public void setTriggerType(String triggerType) {
this.triggerType = triggerType;
}
}
和
public class TiggerMove extends Trigger{
private String eventName;
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
}
和
public class TiggerHault extends Trigger{
private String description;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
和
public class TiggerDuration extends Trigger{
private String duration;
private Tigger<T> trigger;
public String getDuration() {
return duration;
}
public void setDuration(String duration) {
this.duration = duration;
}
public String getTrigger() {
return duration;
}
public void setTrigger(Trigger trigger) {
this.trigger = trigger;
}
}
我读了几个使用Gson's RuntimeTypeAdapterFactory提到的答案。但我无法真正使用它,因为我看到所有的例子都使用它作为第一级元素而不是内部元素。
如何使用Android GSON对其进行反序列化?
答案 0 :(得分:0)
最简单的解决方案是使用像json to pojo这样的网站。此站点将您的json作为输入并生成专门创建用于与gson一起使用的pojo类。然后Gson会毫无问题地反序列化你的json。