봄 부츠 조다 데이트 시간 연재
Spring Boot v1.2.0을 사용하여 Joda DateTime 속성을 ISO-8601로 직렬화하려고 합니다.BUILD-SNAPHOT 매우 간단한 REST 애플리케이션을 소개합니다.
@RestController
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
class Info{
private DateTime dateTime;
public Info(){
dateTime = new DateTime();
}
public DateTime getDateTime() {
return dateTime;
}
public void setDateTime(DateTime dateTime) {
this.dateTime = dateTime;
}
}
@RequestMapping("/info")
Info info() {
return new Info();
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public Module getModule(){
return new JodaModule();
}
}
dateTime은 타임스탬프로 직렬화됩니다.{"dateTime":1415954873412}
추가해봤습니다.
@Bean
@Primary
public ObjectMapper getObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,
false);
return objectMapper;
}
하지만 그것도 도움이 되지 않았습니다.그렇다면 ISO-8601 형식을 사용하여 직렬화하도록 스프링 부트의 Jackson을 구성하려면 어떻게 해야 합니까?BTW: 다음 종속성만 내 Gradle 빌드에 추가했습니다.
compile("joda-time:joda-time:2.4")
compile("org.jadira.usertype:usertype.jodatime:2.0.1")
compile("com.fasterxml.jackson.datatype:jackson-datatype-joda:2.4.2");
Spring Boot 1.2를 사용하고 있기 때문에 다음 사항을 간단히 추가할 수 있습니다.application.properties
파일:
spring.jackson.serialization.write_dates_as_timestamps=false
그러면 다음과 같은 형식으로 출력이 제공됩니다.
{
"dateTime": "2014-11-18T19:01:38.352Z"
}
사용자 지정 형식이 필요한 경우 구성할 수 있습니다.JodaModule
시간 부분을 삭제하는 예를 들어 직접:
@Bean
public JodaModule jacksonJodaModule() {
JodaModule module = new JodaModule();
DateTimeFormatterFactory formatterFactory = new DateTimeFormatterFactory();
formatterFactory.setIso(ISO.DATE);
module.addSerializer(DateTime.class, new DateTimeSerializer(
new JacksonJodaFormat(formatterFactory.createDateTimeFormatter()
.withZoneUTC())));
return module;
}
Spring Boot 1.2를 사용하면 유창한 빌더를 사용하여 구축할 수 있습니다.ObjectMapper
인스턴스:
@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
return builder
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.build();
}
에 대해서는JodaModule
다음 시간에 자동 구성됩니다.com.fasterxml.jackson.datatype:jackson-datatype-joda
클래스 경로에 있습니다.
패스아new JodaModule()
개체 매퍼의 생성자로 이동합니다.
ISO 패턴으로 정보 메서드에 주석 달기
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
아니면 스프링을 사용하시는 분들은 이걸 쓰셔도 될 것 같아요.
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateTimeFormat.ISO.DATE_TIME)
에 추가합니다.application.*
당신의 자원 안에서.(저는 야멜을 사용하기 때문에..yml
나를 위해, 하지만 그래야 합니다..properties
기본값)
spring.jackson.date-format: yyyy-MM-dd'T'HH:mm:ssZ
원하는 형식을 선택할 수도 있고요.
application.properties에서 설정할 수 있는 joda-date-time-format 속성(이 속성은 Spring boot 1.3.x 버전에서 처음으로 등장한 것으로 생각됨)도 있습니다. 이 속성은 Jackson serialization/deserialization에 사용할 수 있습니다.
보낸 사람: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
spring.jackson.joda-date-time-format= # Joda date time format string. If not configured, "date-format" will be used as a fallback if it is configured with a format string.
따라서 ISO 형식을 사용하려면 다음과 같이 설정할 수 있습니다.
spring.jackson.joda-date-time-format=yyyy-MM-dd'T'HH:mm:ss.SSSZ
시간대 ID 또는 오프셋 시간이 표시되는 방식을 변경하는 'Z'의 개수를 joda 시간 문서(http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html) :
Zone: 'Z' outputs offset without a colon, 'ZZ' outputs the offset with a colon, 'ZZZ' or more outputs the zone id.
언급URL : https://stackoverflow.com/questions/26926289/spring-boot-joda-datetime-serialisation
'programing' 카테고리의 다른 글
Python의 조건부 문장 포함) (0) | 2023.07.25 |
---|---|
로컬 도커에서 호스팅되는 mariadb에 연결하는 스프링 부트 (0) | 2023.07.25 |
CMAKE_BUILD_TYPE= Release가 -DN DEBUG를 의미합니까? (0) | 2023.07.25 |
PHP가 사용되지 않음:이름이 같은 메서드 (0) | 2023.07.25 |
시스템() 명령이 완료될 때까지 기다리지 않는 방법이 있습니까?(c) (0) | 2023.07.25 |