Я не думаю, что это должно быть доступно из коробки.Поскольку технически вы можете иметь как old
, так и OLD
в качестве допустимых значений вашего перечисления, проживающих вместе, учет готовых преобразований в верхнем регистре может нарушить эквивалентность в обе стороны.Подумайте о сериализации значения MyEnum.old
, чтобы при десериализации получилось значение MyEnum.OLD
.
Однако вы можете вызвать такое поведение с помощью адаптера.
public static class MyAdapter implements JsonbAdapter<MyEnum, String> {
@Override
public String adaptToJson(MyEnum value) {
return value.name();
}
@Override
public MyEnum adaptFromJson(String s) {
return MyEnum.valueOf(s.toUpperCase());
}
}
Далее аннотируйтеперечисление с @JsonbTypeAdapter
.
@JsonbTypeAdapter(MyAdapter.class)
public enum MyEnum {
NEW,
OLD,
REFURBISHED;
}
В качестве альтернативы вы создаете своего провайдера Jsonb следующим образом.
Jsonb jsonb = JsonbBuilder.create(new JsonbConfig().withAdapters(new MyAdapter()));