首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JSON-B / Yasson忽略枚举大小写

使用JSON-B / Yasson忽略枚举大小写
EN

Stack Overflow用户
提问于 2019-01-21 20:29:38
回答 1查看 830关注 0票数 1

使用JSON-B / Yasson,有没有办法在反序列化时忽略枚举的大小写?

代码语言:javascript
复制
public class MyObject{
  MyEnum condition;
  //getters and setters
} 
public enum MyEnum{
 NEW, OLD, REFURBISHED;
}

传入JSON的一部分:"condition" : "new"问题是传入的JSON使用小写的枚举。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-22 23:01:57

我不认为这应该是开箱即用的。因为从技术上讲,您可以同时将oldOLD作为枚举的有效值,因此允许开箱即用的大写转换可能会破坏往返等价性。考虑在反序列化时序列化MyEnum.old值,以MyEnum.OLD值结束。

但是,您可以通过使用适配器来强制执行此行为。

代码语言:javascript
复制
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注释枚举。

代码语言:javascript
复制
@JsonbTypeAdapter(MyAdapter.class)
public enum MyEnum {
    NEW,
    OLD,
    REFURBISHED;
}

或者,您可以按如下方式创建Jsonb提供程序。

代码语言:javascript
复制
Jsonb jsonb = JsonbBuilder.create(new JsonbConfig().withAdapters(new MyAdapter()));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54290020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档