使用Gson(Android项目)无法正确反序列化Enum

时间:2018-04-16 12:51:52

标签: java android json gson

我正在尝试使用Gson序列化一个Restaurant类,以便将它放在SQLite表中。 Restaurant类包含一个用于存储状态列表的变量:

public class Restaurant extends RestaurantObservable implements Serializable {
private final List<Status> statuses = new ArrayList<Status>();
...

状态是一个接口,定义为:

public interface Status {

public boolean hasDuration();
public long getMinuteDuration();
default long getMilliDuration() {
    return getMinuteDuration() * 60000;
}
public String getName();
}

最常用的Status是DefaultStatus。我试图使用@SerializedName注释进行序列化,认为它会使它工作。这是该类定义的开始部分:

public enum DefaultStatus implements Status {

@SerializedName("0")
UNOCCUPIED(0),
@SerializedName("5")
WELCOMED(5),
@SerializedName("3")
DRINK_ORDER(3),
...

我还定义了一个自定义的InterfaceAdapter,因为它不会起作用。但是,当我尝试从数据库反序列化我的Restaurant对象时,我收到以下错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pewletthackard.waiterfocusapp/com.pewletthackard.waiterfocusapp.core.MainActivity}: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Not a JSON Object: "0"

有人知道我该怎么办吗?我一直试图解决这个问题。

这是我的json:https://justpaste.it/1jose

0 个答案:

没有答案