2017-10-11 1 views
0

저는 REST 서비스 응답의 직렬화에 Jackson 2.8을 사용하고 있습니다. 나는 다음과 같은 JsonGenerator 기능을 필드의 소수의특정 필드에 대해 Jackson 직렬화 기능 WRITE_NUMBERS_AS_STRINGS를 비활성화하는 방법은 무엇입니까?

objectMapper.configure(WRITE_NUMBERS_AS_STRINGS, true); 

값을 적용 할 경향이없는 서비스의 대부분 (64 비트 IEEE 754 부동 소수점 값으로 번호를 저장) 자바 스크립트와 관련된 숫자의 손상을 방지하기 위해 IEEE 754 변환 오류입니다. 그러나 문자열로 직렬화하면 클라이언트 응용 프로그램에서 오류가 발생하며 리팩토링 (이 경우)은 지루하고 피하는 것이 좋습니다.

내가

@JsonSerialize(as = int.class)  
int status; 

하지만 성공하지 JsonSerialize 주석

를 사용하여 시도했습니다. WRITE_NUMBERS_AS_STRINGS이 (가) 주석보다 우선합니다.

문제는 가능한 경우 WRITE_NUMBERS_AS_STRINGS 기능이 적용한 규칙에서 일부 제외를 구성하는 것입니다.

잭슨에서

답변

1

2 주석 documentation :

@JsonRawValue : 사용할 수있는 속성 별 마커가 지정하는 속성의 값이 그대로 ''정확히 ''직렬화에 포함되어야하는 것을,와 탈출하거나 장식하지 말 것

WRITE_NUMBERS_AS_STRINGS과 같은 경우에도 @JsonRawValue이 보이는 것 같습니다.


또 다른 옵션은 POJO에 Map<String, Long> field; 같은이 있다면 당신은 어떤 기본 주석지도 키/값에 도달 할 수 없기 때문에, 사용자 지정 serializer를 사용하는 것입니다.

+0

@ JsonRawValue에게 감사드립니다. - 도움이되었습니다. 질문을 게시하기 전에 맞춤 serializer 클래스를 사용해 보았습니다. – AlexK