我正在使用Retrofit来访问一个api,它将给我提供汽车车门的状态。回复是这样的:
{
"response": {
"driver_front": 0,
"driver_rear": 0,
"passenger_front": 0,
"passenger_rear": 0,
"trunk": 0,
}
}理想情况下,我希望将其解析为如下所示的EnumSet:
public enum Doors
{
DRIVER_FRONT,
DRIVER_REAR,
PASSENGER_FRONT,
PASSENGER_REAR,
TRUNK
}
private EnumSet<Doors> _openDoors = EnumSet.noneOf(Doors.class);但我想不出怎么把它转换成那种格式。我尝试向枚举添加一个布尔值来显示状态,并添加一个自定义的反序列化程序,但它从未被调用过,即使它会被调用,我也只会得到值,而不是键,所以我不知道它是用于哪个门的。有没有人对此有什么好的窍门?
发布于 2015-12-24 10:18:58
我认为您可以在枚举中使用序列化名称,因为GSON为枚举提供了默认的序列化和反序列化(Official documentation)
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;
}
}https://stackoverflow.com/questions/34445874
复制相似问题