0

У меня есть следующий 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?

ответ

0

Самое простое решение - использовать такой сайт json to pojo. Этот сайт принимает ваш json в качестве входных данных и генерирует классы pojo, которые специально созданы для использования с gson. Затем Гессон десериализует ваш json без каких-либо проблем.

+0

Я пробовал это, но это не помогает, поскольку существует более одного его появления рекурсивным способом – Nik