Springboot 에서 Jackson 을 어떻게 사용 합 니까?
5033 단어 SpringbootJackson
SpringMVC 는 기본적으로 Jackson 을 통합 하 였 습 니 다.다음 과 같 습 니 다.
@RequestMapping("/addUserInfo")
public UserInfo addUserInfo(@RequestBody UserInfo userInfo){
}
User Info 대상 으로 프론트 데스크 에서 전 달 된 json 을 연결 할 수 있 습 니 다.SpringMVC 는 자동 으로 역 직렬 화 를 도와 주 었 습 니 다.SpringBoot 에 서 는 웹 starter 만 가 져 오고 다른 의존 도 를 추가 하지 않 아 도 Jackson 을 사용 할 수 있 음 을 알 수 있 습 니 다.
2.시간 포맷
직렬 화 과정 에서 Date 형식 이 있 으 면 다음 과 같은 몇 가지 방식 으로 시간 필드 를 포맷 할 수 있 습 니 다.
2.1 주해 방식
JSonFormat 주 해 를 추가 하면 날짜 형식 을 고정 할 수 있 습 니 다.
public class UserInfo {
private String name;
private String password;
private Integer age;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birth;
이 주 해 를 통 해 시간 대(time zone)를 지정 할 수도 있 습 니 다.2.2 재 작성 bean
다시 Jackson HttpMessage Converters Configuration 클래스 의 bean
@Configuration
public class WebMvcConfig {
@Bean
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
return mappingJackson2HttpMessageConverter;
}
}
Jackson HttpMessage Converters Configuration 클래스 에서 원래 의 방법 은:
@ConditionalOnClass({ObjectMapper.class})
@ConditionalOnBean({ObjectMapper.class})
@ConditionalOnProperty(
name = {"spring.mvc.converters.preferred-json-mapper"},
havingValue = "jackson",
matchIfMissing = true
)
static class MappingJackson2HttpMessageConverterConfiguration {
MappingJackson2HttpMessageConverterConfiguration() {
}
@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);
}
}
이것 은 최신 버 전의 spring 입 니 다.이전 버 전과 약간 차이 가 있 지만 볼 수 있 습 니 다. mappingJackson 2HttpMessageConverter 방법 에 ObjectMapper 를 주입 하 였 습 니 다.그러면 우 리 는 ObjectMapper 를 직접 수정 할 수 있 습 니까?물론 Jackson 의 자동 설정 클래스(Jackson AutoConfiguration)에서 다음 을 발견 할 수 있 습 니 다.
@ConditionalOnClass({Jackson2ObjectMapperBuilder.class})
static class JacksonObjectMapperConfiguration {
JacksonObjectMapperConfiguration() {
}
@Bean
@Primary
@ConditionalOnMissingBean
ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
return builder.createXmlMapper(false).build();
}
}
이 내부 클래스 에 서 는 Object Mapper 를 제공 합 니 다.그래서 우 리 는 이 빈 을 직접 다시 만 들 수도 있 고 전체적인 날짜 형식 을 수정 하 는 역할 도 할 수 있다.
@Configuration
public class WebMvcConfig {
@Bean
ObjectMapper jacksonObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
return objectMapper;
}
}
테스트 를 통 해 주해 방식 의 우선 순 위 는 아래 의 두 가지 보다 높다.3.잭 슨 의 간단 한 사용
// jackSon
public static void main(String[] args) throws JsonProcessingException {
UserInfo userInfo = getTestUser();
ObjectMapper objectMapper = new ObjectMapper();
// json
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // null
String userJsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(userInfo);
System.out.println(userJsonString);
// json java
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
UserInfo userInfo2 = objectMapper.readValue(userJsonString, UserInfo.class);
System.out.println(userInfo2);
}
본문 저자:DayRain본문 링크:https://www.cnblogs.com/phdeblog/p/13234842.html
이상 은 Springboot 에서 Jackson 을 어떻게 사용 하 는 지 에 대한 상세 한 내용 입 니 다.Springboot 에서 Jackson 을 사용 하 는 것 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.