【发布时间】:2014-06-09 17:27:41
【问题描述】:
我正在以稍微“不同”的方式使用 Gson,我想知道以下是否可行...
我想更改枚举的默认序列化/反序列化格式,以便它使用完全限定的类名,但保持对所述枚举上的 @SerializedName 注释的支持。基本上,给定以下枚举...
package com.example;
public class MyClass {
public enum MyEnum {
OPTION_ONE,
OPTION_TWO,
@SerializedName("someSpecialName")
OPTION_THREE
}
}
我希望以下内容属实……
gson.toJson(MyEnum.OPTION_ONE) == "com.example.MyClass.MyEnum.OPTION_ONE"
&&
gson.toJson(MyEnum.OPTION_TWO) == "com.example.MyClass.MyEnum.OPTION_TWO"
&&
gson.toJson(MyEnum.OPTION_THREE) == "someSpecialName"
反之亦然。
(对于那些好奇的人,我正在尝试构建一个小库,让我可以将 android 的意图操作视为枚举,这样我就可以编写 switch 语句而不是一堆丑陋的 if-else + 字符串比较,而且我希望支持注释,以便我还可以在同一个枚举中包含自定义的预先存在的操作字符串,如 Intent.ACTION_VIEW 等)。
那么有谁知道如果存在@SerializedName 字段,是否可以注册一个可以回退的类型适配器?我是否只需要自己在自己的 TypeAdapter 中检查该注释?
提前致谢。
【问题讨论】:
标签: java serialization enums gson