簡體   English   中英

傑克遜反序列化枚舉值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM