从@JsonProperty值获取枚举常量

huangapple go评论81阅读模式
英文:

Get enum constant from @JsonProperty value

问题

我有一个带有@JsonProperty注解的枚举,用于使用Jackson进行JSON序列化/反序列化,并且想要根据给定的String JsonProperty获取枚举值:

public enum TimeBucket {
    @JsonProperty("Daily") DAY_BUCKET, 
    @JsonProperty("Weekly") WEEK_BUCKET, 
    @JsonProperty("Monthly") MONTH_BUCKET;
}

期望的方法应该是通用的/静态的(这样就不需要在每个枚举中复制它),并且可以从JsonProperties中提取枚举值:

public static <T extends Enum<T>> T getEnumFromJsonProperty(Class<T> enumClass, String jsonPropertyValue)
英文:

I have an Enum marked with @JsonProperty for JSON serialization/deserialization with Jackson and would like to get the enum value for a given String JsonProperty:

public enum TimeBucket {
    @JsonProperty(&quot;Daily&quot;) DAY_BUCKET, 
    @JsonProperty(&quot;Weekly&quot;) WEEK_BUCKET, 
    @JsonProperty(&quot;Monthly&quot;) MONTH_BUCKET;
}

The desired method should be generic/static (so it would not be necessary to replicate it in each of the enums) and would extract an enum value out of one of the JsonProperties:

public static &lt;T extends Enum&lt;T&gt;&gt; T getEnumFromJsonProperty(Class&lt;T&gt; enumClass, String jsonPropertyValue)

答案1

得分: 2

以下是翻译好的内容:

所需的结果可以通过以下方法实现:

public static <T extends Enum<T>> T getEnumValueFromJsonProperty(Class<T> enumClass, String jsonPropertyValue) {
    Field[] fields = enumClass.getFields();
    for (int i = 0; i < fields.length; i++) {
        if (fields[i].getAnnotation(JsonProperty.class).value().equals(jsonPropertyValue)) {
            return Enum.valueOf(enumClass, fields[i].getName());
        }
    }
    return null;
}
英文:

The desired result can be achieved through the following method:

public static &lt;T extends Enum&lt;T&gt;&gt; T getEnumValueFromJsonProperty(Class&lt;T&gt; enumClass, String jsonPropertyValue) {
    Field[] fields = enumClass.getFields();
    for (int i=0; i&lt;fields.length; i++) {
        if (fields[i].getAnnotation(JsonProperty.class).value().equals(jsonPropertyValue)) {
            return Enum.valueOf(enumClass, fields[i].getName());
        }
    }
    return null;
}

huangapple
  • 本文由 发表于 2020年10月19日 00:21:00
  • 转载请务必保留本文链接:https://go.coder-hub.com/64415585.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定