首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Retrofit解析EnumSet

使用Retrofit解析EnumSet
EN

Stack Overflow用户
提问于 2015-12-24 08:51:48
回答 1查看 341关注 0票数 1

我正在使用Retrofit来访问一个api,它将给我提供汽车车门的状态。回复是这样的:

代码语言:javascript
复制
{
    "response": {
        "driver_front": 0,
        "driver_rear": 0,
        "passenger_front": 0,
        "passenger_rear": 0,
        "trunk": 0,
    }
}

理想情况下,我希望将其解析为如下所示的EnumSet:

代码语言:javascript
复制
public enum Doors
{
    DRIVER_FRONT,
    DRIVER_REAR,
    PASSENGER_FRONT,
    PASSENGER_REAR,
    TRUNK
}
private EnumSet<Doors> _openDoors = EnumSet.noneOf(Doors.class);

但我想不出怎么把它转换成那种格式。我尝试向枚举添加一个布尔值来显示状态,并添加一个自定义的反序列化程序,但它从未被调用过,即使它会被调用,我也只会得到值,而不是键,所以我不知道它是用于哪个门的。有没有人对此有什么好的窍门?

EN

回答 1

Stack Overflow用户

发布于 2015-12-24 10:18:58

我认为您可以在枚举中使用序列化名称,因为GSON为枚举提供了默认的序列化和反序列化(Official documentation)

代码语言:javascript
复制
public enum Doors {

    @SerializedName("0")
    DRIVER_FRONT (0), 

    @SerializedName("1")
    DRIVER_REAR (1),

    @SerializedName("2")
    PASSENGER_FRONT (2),

    @SerializedName("3")
    PASSENGER_FRONT (3),

    @SerializedName("4")
    TRUNK (4);

    private final int value;

    public int getValue() {
        return value;
    }

    private Doors(int value) {
        this.value = value;
    }

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

https://stackoverflow.com/questions/34445874

复制
相关文章

相似问题

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