0
我可以爲枚舉設置默認值,當我傳遞空值?傑克遜反序列化枚舉值
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,當我通過空值 - 同時傑克遜反序列化的空,但是當我通過一些奇怪的 - 它設置默認值。我的傑克遜的配置是在這裏:
@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());
}
是的,它的工作對我來說,當我刪除了龍目島@AllArgsConstructor。 傑克遜用空值調用它,並且我的字段init失敗。 – Radik