【发布时间】:2020-07-08 17:11:03
【问题描述】:
我为我的 Java 项目创建了两个枚举,它们都需要使用 Gson 进行序列化和反序列化。问题是,我需要在每个枚举字段上使用一个值作为序列化值。
例如,我有这些枚举:
我希望我能够使用提供给两者的key 值来序列化这两个枚举。这是一个非常简化的示例,但它仍然完美地描述了我的情况。
我尝试对两者都使用自定义序列化程序类:
是的,我确实使用 registerTypeAdapter(type, adapter) 注册了两者
奇怪的是,它适用于一个枚举,序列化为正确的值,但不是另一个。我怀疑这是因为被序列化的类的格式类似于:
public class Item {
public Language language;
public List<Options> options;
}
在这种情况下,Language 被正确序列化,但 Options 枚举不是,只是返回枚举值名称。
我不确定我是否需要一些特殊的方法来处理这个问题,但这越来越令人沮丧。
编辑:我知道使用 @SerializedName() 注释,但我使用的两个枚举都有数百个条目,并且作为枚举一部分的键在整个程序的其他地方使用也是。使用@SerializedName(),至少在我的情况下,我认为不可行。
【问题讨论】:
标签: java json serialization enums gson