У меня есть два перечисления, которые я создал для своего проекта Java, и оба из них необходимо сериализовать и десериализовать с помощью Gson. Проблема в том, что мне нужно использовать значение в каждом поле перечисления в качестве сериализованного значения.
В качестве примера у меня есть следующие перечисления:
Параметры Enum
Language Enum
Я надеюсь, что я смогу сериализовать оба перечисления, используя значение key
, предоставленное обоим. Это действительно упрощенный пример, но он по-прежнему прекрасно описывает мою ситуацию.
Я пробовал использовать собственные классы сериализатора для обоих:
Сериализатор параметров
Сериализатор языка
И да, я зарегистрировал оба, используя registerTypeAdapter(type, adapter)
Как ни странно, он работал бы для одного перечисления, сериализуясь до правильного значения, но не другой. Я подозреваю, что это потому, что сериализуемый класс форматируется примерно так:
public class Item {
public Language language;
public List<Options> options;
}
Где в этом случае Language
сериализуется правильно, а Options
enum нет, просто возвращает значение перечисления name.
Я не уверен, что мне нужен какой-то особый способ справиться с этим, но это меня расстраивает.
EDIT : Я знаю об использовании @SerializedName()
аннотация, но оба перечисления, которые я использую, содержат сотни записей, и ключи, которые являются частью перечисления, также используются в других местах программы. Использование @SerializedName()
, по крайней мере, в моем случае, я не думаю, что это возможно.