0

我有以下种类的JSON来自服务器。Deserialise/Serialise JSON使用Gson的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有一个对象“配置”,可能有递归发生的“触发器”元素。但是这种触发类型根据配置不同而不同。

我想我已经成功地创建不同类型的基类触发器为 “触发” 的不同类如下

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作为输入,并生成专门用于gson的pojo类。然后Gson将反序列化你的json,没有任何问题。

+0

我试过,但多数民众赞成在没有帮助,因为有更多的一次发生它的递归方式 – Nik