Springboot 에서 Jackson 을 어떻게 사용 합 니까?

5033 단어 SpringbootJackson
1.SpringMVC 의 기본 통합
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 을 사용 하 는 것 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기