有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从REST API的JSON请求中反序列化枚举字段的可选值?

REST API的请求模型有一个枚举字段:

public enum CommentContext {  
  STUDENT_FEEDBACK,
  STUDENT_QUESTION;
}

现在,我想从enum值中删除STUDENT_uu前缀,但不中断API的现有调用者

我试着使用@jsonaas,如下所示:

public enum CommentContext {
   @JsonAlias ("{FEEDBACK, STUDENT_FEEDBACK}")
   FEEDBACK,
   @JsonAlias ("{QUESTION, STUDENT_QUESTION}")
   COMMENT;
}

但是,当STUDENT_反馈作为请求JSON中该枚举字段的值传递时,API因400个错误请求而失败

是否可以从JSON中反序列化此CommentContext对象,以获取此枚举字段的可选值(如反馈或学生反馈)


共 (1) 个答案

  1. # 1 楼答案

    可以使用@JsonCreator来实现。在这里,我为您的问题提供了解决方案:

    public enum CommentContext {
    STUDENT_FEEDBACK,
    STUDENT_QUESTION;
    
    @JsonCreator
    public static CommentContext setValue(String key){
        Optional<CommentContext> commentContext = Arrays.stream(CommentContext.values())
                .parallel()
                .filter(ct -> ct.toString().equals(key) || ct.toString().substring(8).equals(key))
                .findAny();
        return commentContext.orElse(null);
    }
    }
    

    你也可以看到这个link