首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Gson的RuntimeTypeAdapterFactory反序列化/序列化JSON

使用Gson的RuntimeTypeAdapterFactory反序列化/序列化JSON
EN

Stack Overflow用户
提问于 2016-06-14 23:15:56
回答 1查看 151关注 0票数 0

我有来自服务器的以下类型的JSON。

代码语言:javascript
复制
    {
    "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“,如下所示

代码语言:javascript
复制
public class Trigger{
private String triggerType;

    public String getTriggerType() {
        return triggerType;
    }

    public void setTriggerType(String triggerType) {
        this.triggerType = triggerType;
    }
}

代码语言:javascript
复制
public class TiggerMove extends Trigger{

private String eventName;

    public String getEventName() {
        return eventName;
    }

    public void setEventName(String eventName) {
        this.eventName = eventName;
    } 
}

代码语言:javascript
复制
public class TiggerHault extends Trigger{

    private String description;

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        } 
    }

代码语言:javascript
复制
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对其进行反序列化?

EN

回答 1

Stack Overflow用户

发布于 2016-06-15 01:48:33

最简单的解决方案是使用像这样的json to pojo网站。这个站点接受您的json作为输入,并生成专门为与gson一起使用而创建的pojo类。然后,Gson将不会出现任何问题地反序列化您的json。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37815996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档