使用@JsonProperty将枚举枚举为int值

时间:2015-10-30 13:59:15

标签: java json enums jackson

import com.fasterxml.jackson.annotation.JsonProperty;

public enum ReviewersRating {
    @JsonProperty(0)_0,_1, _2, _3, _4, _5;  
}

我有一个需要分别转换为int值的枚举。如果值为String类型,我已经成功了,但我如何为int等其他数据类型执行此操作?

根据其中一条评论的建议,我试过

import com.fasterxml.jackson.annotation.JsonProperty;

public enum ReviewersRating {
    _0(0),_1(1), _2(2), _3(3), _4(4), _5(5);

    private int rating;
    private ReviewersRating(final int rating) {
        this.rating = rating;
    }

    @JsonProperty
    public int toInt()
    {
        return rating;
    }
}

结果仍未以int类型打印。我在JSON "ReviewersRating": "_0",

中得到了这个

1 个答案:

答案 0 :(得分:1)

在getter方法上使用@JsonValue可以解决问题

import com.fasterxml.jackson.annotation.JsonValue;

public enum ReviewersRating {
    _0(0),_1(1), _2(2), _3(3), _4(4), _5(5);

    private final int rating;
    private ReviewersRating(final int rating) {
        this.rating = rating;
    }

    @JsonValue
    public int toInt()
    {
        return this.rating;
    }
}