2017-10-09 8 views
0

null値を渡しているときにenumのデフォルト値を設定できますか?ジャーマンの逆シリアル化列挙値

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; 
} 

}

私がnull値を渡すときに私は、私の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()); 
} 

答えて

0

あなたは、それがNULL値のために働くだろう、クラスレベルでデフォルト値を提供する必要があります。

例えば:

class Dto { 
    private Something something = Something.A; 
    private Smth smth; 
    private String name; 
} 
+0

はい、そのiはロンボク@AllArgsConstructorを削除するとき、私のために働きました。 ジャクソンはそれをnull値で呼び出していて、フィールドのinitは失敗していました。 – Radik

関連する問題