[SPRING] Jackson SerializationFeature.WRITE_DATES_AS_TIMESTAMPS가 봄에 타임 스탬프를 끄지 않습니다.
SPRINGJackson SerializationFeature.WRITE_DATES_AS_TIMESTAMPS가 봄에 타임 스탬프를 끄지 않습니다.
많은 검색을 한 후 java.util.Date 필드를 타임 스탬프로 직렬화하는 것을 중지하는 방법을 추적했습니다.이 때 @ @RestController에서 JSON 응답으로 변환합니다.
그러나 나는 그것을 작동시킬 수 없습니다. 발견 한 모든 게시물은 Jackson objet mapper의 SerializationFeature.WRITE_DATES_AS_TIMESTAMPS 기능을 사용하지 않도록 설정했습니다. 그래서 다음 코드를 작성했습니다.
public class MVCConfig {
@Autowired
Jackson2ObjectMapperFactoryBean objectMapper;
@PostConstruct
public void postConstruct() {
this.objectMapper.setFeaturesToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
}
}
내가 이해할 수 있듯이, 설정은 bean이기도하다. 따라서 객체 매퍼의 자동 배선이 추가 속성을 설정해야한다. 나는 브레이크 포인트를 사용했고이 설정으로 모든 것이 잘 어울립니다.
그러나 http 쿼리에 대한 응답으로 java.util.Date 속성을 사용하여 bean을 serialize 할 때 나는 여전히 타임 스탬프를 얻고 있습니다.
왜 이것이 작동하지 않는지 아는 사람이 있습니까? 그것은 저를 난처하게했습니다!
해결법
-
==============================
1.주위를 어지럽히고 난 후 다음 코드가 문제를 해결한다는 것을 알게되었습니다.
주위를 어지럽히고 난 후 다음 코드가 문제를 해결한다는 것을 알게되었습니다.
public class MVCConfig extends WebMvcConfigurerAdapter { @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { for (HttpMessageConverter<?> converter : converters) { if (converter instanceof MappingJackson2HttpMessageConverter) { MappingJackson2HttpMessageConverter jsonMessageConverter = (MappingJackson2HttpMessageConverter) converter; ObjectMapper objectMapper = jsonMessageConverter.getObjectMapper(); objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); break; } } } }
잭슨 MVC 메시지 변환기에 액세스하여 구성하는 쉬운 방법이 있는지 확실하지 않습니다. 그러나 이것은 나를 위해 일하고있다.
-
==============================
2.예, @Feyyaz에 동의합니다 : properties / yml 파일에 config를 추가하는 것은 기본 컨텍스트 (de) serializer를 구성하는 방법입니다. 이것이 컨트롤에서 벗어 났을 때 스프링 컨텍스트로 조작 될 때까지 남겨 둡니다.
예, @Feyyaz에 동의합니다 : properties / yml 파일에 config를 추가하는 것은 기본 컨텍스트 (de) serializer를 구성하는 방법입니다. 이것이 컨트롤에서 벗어 났을 때 스프링 컨텍스트로 조작 될 때까지 남겨 둡니다.
자세한 내용은 Spring 문서의이 부분을 참조하십시오.
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html#howto-customize-the-jackson-objectmapper
원본 링크 제거의 경우 인용 :
(StackOverFlow markdown은 테이블 구문을 지원하지 않으므로 포맷이 잘못되어 있습니다.이 부분을 Sublime Text에 복사하여 붙여 넣기하고 .md로 저장하거나 원래 링크를 확인하십시오.)
예 :
spring: jackson: default-property-inclusion: non_null # to exclude null in json serialization serialization: write-dates-as-timestamps: true # write milliseconds since epoch in the final json
또는:
spring.jackson.default-property-inclusion: non_null # to exclude null in json serialization spring.jackson.serialization.write-dates-as-timestamps: true # write milliseconds since epoch in the final json
-
==============================
3.네, 후크하고 변환기를 사용하는 개체 매퍼를 변경하면 뭔가를해야합니다
네, 후크하고 변환기를 사용하는 개체 매퍼를 변경하면 뭔가를해야합니다
public class CustomObjectMapper extends ObjectMapper { public CustomObjectMapper() { this.configure(com.fasterxml.jackson.databind.SerializationFeature. WRITE_DATES_AS_TIMESTAMPS, false); } }
MVCConfig 내부 및 내부
@Bean public ObjectMapper jacksonObjectMapper() { return new CustomObjectMapper(); } @Bean public SerializationConfig serializationConfig() { return jacksonObjectMapper().getSerializationConfig(); }
-
==============================
4.
ObjectMapper objectMapper = new ObjectMapper() .registerModule(new JavaTimeModule()) .configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true) .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
from https://stackoverflow.com/questions/27978762/jackson-serializationfeature-write-dates-as-timestamps-not-turning-off-timestamp by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 최대 절전 모드로 C3P0의 스프링 구성? (0) | 2019.03.27 |
---|---|
[SPRING] Spring Expression Language로 빈 표현식을 프로그래밍 방식으로 평가 (0) | 2019.03.27 |
[SPRING] Spring 주석을 사용하여 파일 속성 읽기 (0) | 2019.03.27 |
[SPRING] NULL을 반환하는 싱글 톤과 @Autowired (0) | 2019.03.27 |
[SPRING] 예기치 않은 반환 된 json은 "_links"로 철자가 지정된 "링크"와 구조가 서로 다릅니다 (Spring hateoas에서). (0) | 2019.03.27 |