[英]Jackson Deserialization Enum Values
當我傳遞空值時,可以設置枚舉的默認值嗎?
public enum Something {
@JsonEnumDefaultValue
A(new BigDecimal(123)),
B(new BigDecimal(555)),
C(new BigDecimal(21312));
private BigDecimal value;
Something(BigDecimal value) {
this.value = value;
}
public BigDecimal getValue() {
return value;
}
}
當我傳遞空值時,我在DTO中將此字段作為字段-jackon將其反序列化為空,但是當我傳遞怪異的東西時-它設置了默認值。 我的傑克遜配置在這里:
@Bean
public ObjectMapper mapper() {
val mapper = new ObjectMapper();
return mapper.enable(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE);
}
Dto類:
public class Dto {
private Something something;
private Smth smth;
private String name;
}
控制器:
@PostMapping
public ResponseEntity<Long> saveEntity(@RequestBody Dto dto) {
return ResponseEntity.ok(repository.save(
MyEntity.builder()
.name(dto.getName())
.something(dto.getSomething())
.smth(dto.getSmth())
.build())
.getId());
}
您需要在類級別提供默認值,然后它將適用於空值。
例如:
class Dto {
private Something something = Something.A;
private Smth smth;
private String name;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.