我正在尝试使用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。