У меня есть следующий JSON, идущий с сервера.Deserialise/Serialise JSON с использованием Gunt's RuntimeTypeAdapterFactory
{
"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 имеет объект «конфигурация», который может иметь рекурсивное возникновение элемента «триггер». Но это различие типа триггера в соответствии с конфигурацией.
Я думаю, что мне удалось создать другой класс для различных типов триггеров с базовым классом, как "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?
Я пробовал это, но это не помогает, поскольку существует более одного его появления рекурсивным способом – Nik