[英]Stop accepting ordinal values of enum in json parsing using jackson
我正在尝试使用 jsckson 构建 json 解析器。 下面是我的枚举类代码:
public enum Priority {
@JsonProperty("LOW")
LOW(100),
@JsonProperty("MEDIUM")
MEDIUM(200),
@JsonProperty("HIGH")
HIGH(300);
private int priority;
Priority(int i) {
this.priority = i;
}
public int getPriority() {
return priority;
}
}
现在我希望我的解析器只接受 3 个输入,它们是“HIGH”、“LOW”和“MEDIUM”。 但它也采用序数值。 例如:如果我的输入是这样的:
{
"priority": 0
}
它采用低优先级而不是给出错误。
我怎么能阻止这个?
添加以下 Bean 配置:
@Bean
public Jackson2ObjectMapperBuilderCustomizer enableFailOnNumbersForEnums() {
return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.featuresToEnable(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS);
}
这将阻止 Jackson 将序数反序列化为 Enum 值。 您可以在此处阅读有关启用/禁用的可用功能的更多信息: https : //github.com/FasterXML/jackson-databind/wiki/Deserialization-Features
您还可以配置在我的情况下有效的ObjectMapper
:
@Configuration
public class ObjectMapperConfiguration {
@Bean
public ObjectMapper objectMapperBean() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS, true);
return mapper;
}
}
结果是一样的 - Jackson 不再接受枚举的序数值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.