我有来自服务器的以下类型的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有一个对象"configuration“,它可以递归地出现"trigger”元素。但是这种触发类型根据配置而有所不同。
我想我已经设法为不同类型的触发器创建了不同的类,基类作为"Trigger“,如下所示
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对其进行反序列化?
发布于 2016-06-15 01:48:33
最简单的解决方案是使用像这样的json to pojo网站。这个站点接受您的json作为输入,并生成专门为与gson一起使用而创建的pojo类。然后,Gson将不会出现任何问题地反序列化您的json。
https://stackoverflow.com/questions/37815996
复制相似问题