拒绝 Spring 引导 REST 请求中 int 字段中的小数值



Controller 方法:

@PostMapping(value = "/template")
ResponseEntity<Object> createtemplate(@Valid @RequestBody Template template) {
return templateService.createCsvTemplate(template);
}

对象类:

@Getter
@Setter
public class Template {  
@Min(value = 1, message = "Please provide a valid ID, must be greater than 0")
private int id;
}

开机自检输入:

{
"id": 5.5
}

应用程序接受此值,将id的值设置为 5。 我怎么能拒绝接受这样的分数值, 收到错误时抛出错误?

默认情况下,杰克逊将十进制值序列化为整数ACCEPT_FLOAT_AS_INT因为默认情况下该标志为 true。将ACCEPT_FLOAT_AS_INT设置为 false 应该可以解决您的问题。并且您还需要处理抛出异常。

ObjectMapper.configure(DESERIALIZATION_FEATURE.ACCEPT_FLOAT_AS_INT, false);

您可以通过这种方式设置配置

@Configuration
public class JacksonConfig {
@Bean
@Primary
public ObjectMapper configureObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DESERIALIZATION_FEATURE.ACCEPT_FLOAT_AS_INT, false);
return mapper;
}
}

最新更新