希望在JSON中获取枚举值而不是名称

时间:2016-07-08 13:55:18

标签: java json spring enums jackson

我有以下枚举:

public enum NotificationType {

    Store("S"),
    Employee("E"),
    Department("D"),
    All("A");

    public String value;

    NotificationType(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return this.value;
    }

    @JsonCreator
    public static NotificationType fromValue(String value) {
        for (NotificationType type : NotificationType.values()) {
            if (type.value.equals(value)) {
                return type;
            }
        }
        throw new IllegalArgumentException();
    }
}

我创建了一个转换器,以便在将枚举保存到数据库时,它会保留值(S,E,D或A)而不是名称。我可以POST json到控制器的值,并正确绑定到对象。

然而,当我从GET呈现JSON时,它仍然显示名称(Employee,Store等),我希望它仍然显示该值。

1 个答案:

答案 0 :(得分:3)

因为您的toString方法返回了您要用来表示枚举的值,所以您可以使用@JsonValue对其进行注释,告诉Jackson返回值表示枚举的值。