代码之家  ›  专栏  ›  技术社区  ›  Raman Preet Singh

将JSON请求中的字符串映射到请求POJO中的枚举

  •  0
  • Raman Preet Singh  · 技术社区  · 8 年前

    我有一个枚举,它是这样的:

    public enum Level {
        HIGH  ("hi"),  
        MEDIUM("med"), 
        LOW   ("lo")   
        ;   
    
        private final String levelCode;
    
        private Level(String levelCode) {
            this.levelCode = levelCode;
        }
    }
    

    此枚举是另一个请求类中的元素,如:

    public class RequestPOJO{
    
    Level level;
    
    int somefield1; //other instance varilables
    
    //...... other instance varilables
    }
    

    我想将JSON请求中的字符串字段(名为levelCode)映射到此枚举。我在用杰克逊连续剧。是否有任何方法可以将请求中的此字符串字段直接映射到此枚举。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Lib Monk    8 年前

    您可以使用 @JsonValue 中新方法的注释 enum . 该方法应返回 String 只不过 levelCode 在您的示例中。如果这样做,这就解决了序列化和反序列化的问题。

    为了让您及时了解情况,如果 枚举 具有 int 由于与Jackson的一个bug而导致的字段。在这种情况下,您需要使用不同的方法 @JsonCreator .

    您可以参考 my blog 有关实现示例。