如何配置 jackson 将 Enum 转换为 JSON?

Don*_*Kim 5 java enums jackson spring-boot jackson-databind

@AllArgsConstructor
@Getter    
public enum MemberType {
    INTERN("name_intern", 1),
    EMPLOYEE("name_employee", 10);

    private String name;
    private int workingMonth;
}
Run Code Online (Sandbox Code Playgroud)

这是我的枚举。我想将Enum类转换为JSON带有一些约束的字符串。

  1. 我希望 MemberType 与 Jackson 没有依赖关系
  2. 我想转换MemberType.INTERN{id:INTERN, name:"name_intern", workingMonth:10}.
  3. 我有很多枚举想要像上面那样进行转换。而且他们的财产数量也各不相同。
  4. 我想通过一个全局配置来解决这个问题。
  5. 我不想使用显式的 java 反射。

有没有一种解决方案可以满足上述限制呢?

Din*_*dan 6

@JsonFormat您可以像这样使用注释:

 @JsonFormat(shape=JsonFormat.Shape.OBJECT)
 public enum MemberType { ... }
Run Code Online (Sandbox Code Playgroud)

或者你可以使用@JsonValue这样的注释:

public enum MemberType {
        [...]

@JsonValue
public String getName() {
 return name;
}
Run Code Online (Sandbox Code Playgroud)

}

或者可能是 Enum,您可以在此处CustomSerializer找到更多详细信息。