2017-10-09 2 views
0

null 값을 전달할 때 열거 형의 기본값을 설정할 수 있습니까? JACKON가 null로 역 직렬화,하지만 난 뭔가 이상한 통과 할 때 - -잭슨 비 직렬화 열거 형 값

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에 필드로이 열거를해야 함은 기본 값을 설정합니다. 내 잭슨의 설정은 여기에 있습니다 :

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

컨트롤러 :

당신은 클래스 레벨에서 기본값을 제공하기 위해 다음 null 값을 위해 작동 할 필요가
@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

.

예컨대 :

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

예, 그 내가 롬복 @AllArgsConstructor을 제거 할 때, 나를 위해 일했다. Jackson이 null 값을 사용하여이를 호출하고 필드 init이 실패했습니다. – Radik