프로젝트를 생성하고 종속성을 추가합니다.
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency>
엔티티 클래스 UserDTO를 생성합니다.
속성을 추가하고 get 및 set 메서드를 생략합니다.
private String id; private String username; private Date createTime;
Create UserController
컨트롤 레이어 코드 작성
@RestController public class UserController { @GetMapping("/getUser") public List<userdto> getUser() { List<userdto> userList = new ArrayList<userdto>(); for (int i=1; i<p>인터페이스 호출: http://localhost:8080/getUser</p> <p><img src="https://img.php.cn/upload/article/000/887/227/168501804652134.png" alt="SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법"></p> <p> 결과는 분명히 우리에게 필요한 결과가 아니므로 시간 형식을 지정해야 합니다. 그리고 시간대 문제가 있어서 현재 시간은 오후 22시 44분입니다. </p> <h4>첫 번째 방법은 주석을 사용하는 것입니다<br> </h4> <p>변환해야 하는 필드에 @JsonFormat 주석을 추가합니다. 이 주석은 jackson에서 가져온 것이며 웹 패키지에 통합되어 있습니다. </p> <pre class="brush:php;toolbar:false">import com.fasterxml.jackson.annotation.JsonFormat; private String id; private String username; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Date createTime;
패턴: 변환해야 하는 시간과 날짜의 형식
timezone: 변환 시 시간 오류를 피하기 위해 시간은 동부 8구로 설정됩니다.
통화 인터페이스: http://localhost:8080/ getUser
Complete 하지만 여기에도 단점이 있습니다. 모두 Date 유형을 갖는 100개의 엔터티가 있는 경우 100개의 엔터티에 주석을 추가해야 합니다. 좀 곤란한 것 같습니다.
모든 json 생성은 관련 HttpMessageConverters와 분리될 수 없습니다.
SpringBoot는 기본적으로 jackson을 사용하고 이를 기본적으로 구성합니다. 그럼 수정해 보겠습니다.
JacksonHttpMessageConvertersConfiguration에 대한 전역 검색. 아이디어 단축키: Ctrl + Shift + r
이 클래스에는 json을 처리하는 데 사용되는 매핑Jackson2HttpMessageConverter 메서드가 있습니다.
@Bean @ConditionalOnMissingBean( value = {MappingJackson2HttpMessageConverter.class}, ignoredType = {"org.springframework.hateoas.server.mvc.TypeConstrainedMappingJackson2HttpMessageConverter", "org.springframework.data.rest.webmvc.alps.AlpsJsonHttpMessageConverter"} ) MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) { return new MappingJackson2HttpMessageConverter(objectMapper); }
이 메서드에는 두 가지 주석이 있으며 @Bean 주석은 도입되지 않습니다. ConditionalOnMissingBean 주석을 도입합니다.
@ConditionalOnMissingBean: 해당 Bean이 존재하지 않는 경우 현재 Bean을 인스턴스화합니다.
비유: 취업 신고를 할 때 회사에서는 컴퓨터를 가져온 것으로 보고 컴퓨터를 가져오지 않은 경우 회사 컴퓨터를 사용하도록 허용합니다. SpringBoot는 동일한 작업을 수행합니다. 제공하지 않으면 기본 항목을 사용합니다.
New MyConfig
import java.text.SimpleDateFormat; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.fasterxml.jackson.databind.ObjectMapper; @Configuration public class MyConfig { @Bean MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverterConfiguration() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper om = new ObjectMapper(); //全局修改josn时间格式 om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")); converter.setObjectMapper(om); return converter; } }
는 MappingJackson2HttpMessageConverter의 Bean을 제공하므로 Springboot는 우리가 제공하는 것을 사용합니다.
사용자 엔터티 주석을 추가합니다
인터페이스를 호출합니다. http://localhost:8080/getUser
이 방법도 가능합니다.
ObjectMapper 제공
ObjectMapper를 제공하고 위에 제공된 MappingJackson2HttpMessageConverter를 주석 처리할 수도 있습니다.
import java.text.SimpleDateFormat; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.fasterxml.jackson.databind.ObjectMapper; @Bean ObjectMapper objectMapper() { ObjectMapper om = new ObjectMapper(); om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd")); return om; }
통화 인터페이스: http://localhost:8080/getUser
참고: 위의 두 가지 방법은 전체적으로 수정되었습니다!
application.yml 또는 속성에서 기본 구성을 수정하세요
yml
spring: jackson: date-format: yyyy/MM/dd timezone: GMT+8
properties
spring.jackson.date-format=yyyy-MM-dd HH:mm spring.jackson.time-zone=GMT+8
두 번째 방법과 세 번째 방법 구성이 동시에 존재하는 경우 두 번째 방법을 사용하세요. .
세 가지 메소드가 모두 존재하는 경우 엔터티 클래스의 주석 형식이 주요 형식이 됩니다.
위 내용은 SpringBoot가 jackson을 사용하여 시간 형식을 지정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!