스프링 부트의 OffsetDateTime에 대한 Jackson 날짜 형식
Spring 어플리케이션에서 OffsetDateTime을 출력하려고 하는데 어플리케이션.properties에 다음 속성이 있습니다.
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
spring.jackson.date-format=yyyy-MM-dd'T'HH:mm
단, 반환되는 날짜는 다음과 같이 포맷됩니다.
"2017-01-30T16:55:00Z"
Spring 어플리케이션에서 날짜 형식을 올바르게 설정하려면 어떻게 해야 합니까?
그래서 어떻게든 해결책을 찾아냈지만, 대안이 있다면 올려주세요.
결국 새로운 프라이머리(Primary)를 작성하게 되었습니다.ObjectMapperbean 및 커스텀시리얼라이저에 신규 모듈 등록OffsetDateTime여기서 나만의 날짜 형식을 설정할 수 있습니다.java.time.format.DateTimeFormatter등록도 해야 했어요.JavaTimeModule매퍼와 함께요
@Configuration
public class JacksonOffsetDateTimeMapper{
@Primary
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(OffsetDateTime.class, new JsonSerializer<OffsetDateTime>() {
@Override
public void serialize(OffsetDateTime offsetDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeString(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(offsetDateTime));
}
});
objectMapper.registerModule(simpleModule);
return objectMapper;
}
}
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
이렇게 하면 표적에 오프셋을 포함하여 OffsetDateTime 특성을 ISO 8601로 가져올 수 있습니다.
jackson-modules-java8에 대한 의존관계 추가가 효과적(jackson-datatype-jsr310은 권장되지 않음)
<!-- deserialize Java 8 date time types e.g OffsetDateTime -->
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-modules-java8</artifactId>
</dependency>
또, 동작시키기 위해서, 다음과 같이 추가할 필요가 있었습니다.
om.registerModule(new JavaTimeModule());
write-disable-as-disables=false 또는 om.disable(Serialization Feature)은 필요 없습니다.WRITE_DATS_AS_TIMESTAMPS) - Java "Date" 개체에 적용됩니다.
이 주석을 사용했습니다.
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
다음과 같은 출력을 얻을 수 있습니다.
"context":1904-04-23T08:00:00.000-06:00"
- 의존관계에 jackson-datatype-jsr310 추가
application.properties에 추가합니다.
spring.jackson.serialization.write-dates-as-timestamps=false
다음과 같은 이점을 얻을 수 있습니다.
"lastUpdated": "2017-07-16T19:17:57.689Z"
스프링 숙박 시설은 나에게도 맞지 않는다.속성 설정ObjectMapper그래도 난 괜찮아.
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
퍼트 해봤어?@JsonFormat(pattern="dd/MM/yyyy HH:mm:ss Z")그 전에요?
@JsonProperty("timestamp")
@JsonFormat(pattern="yyyy-MM-dd'T'HH:mm")
private OffsetDateTime timestamp;
얻을 수 있을 것 같습니다.
2017-01-30'T'16:55
삭제 중@EnableWebMvc그리고 이제 막 물려받았을 뿐이죠.WebMvcConfigurerAdapterObjectMapper 설정을 덮어쓰지 않도록 지원했습니다.그 때문에, 에 지정되어 있는 설정 속성이application.yml적용됩니다.
언급URL : https://stackoverflow.com/questions/41876037/jackson-date-format-for-offsetdatetime-in-spring-boot
'programing' 카테고리의 다른 글
| 결합 플레이!Framework 2.xx 와 Angular.js (0) | 2023.03.23 |
|---|---|
| 여러 속성 중 하나 이상이 필요한 JSON 스키마를 정의하는 방법 (0) | 2023.03.23 |
| $.syslog( { async : false } ) 요청이 아직 비동기적으로 실행되고 있습니까? (0) | 2023.03.23 |
| Woocommerce의 마지막에 품절된 제품 표시 (0) | 2023.03.23 |
| create-react-app index.js 파일을 테스트합니다. (0) | 2023.03.23 |