使用JSON-B / Yasson,有没有办法在反序列化时忽略枚举的大小写?
public class MyObject{
MyEnum condition;
//getters and setters
}
public enum MyEnum{
NEW, OLD, REFURBISHED;
}传入JSON的一部分:"condition" : "new"问题是传入的JSON使用小写的枚举。
发布于 2019-01-22 23:01:57
我不认为这应该是开箱即用的。因为从技术上讲,您可以同时将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()));https://stackoverflow.com/questions/54290020
复制相似问题