欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot中如何使用Jackson

 更新時間:2020年11月07日 11:33:21   作者:DayRain  
這篇文章主要介紹了Springboot中如何使用Jackson,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下

1、SpringMVC中默認集成

SpringMVC已經(jīng)默認集成了JackSon,如下所示:

  @RequestMapping("/addUserInfo")
  public UserInfo addUserInfo(@RequestBody UserInfo userInfo){

  }

可以用UserInfo對象來接前臺傳過來的json,SpringMVC已經(jīng)幫我們自動反序列化。

 可以看到,在SpringBoot中,只需要導(dǎo)入web 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;

也可以通過這個注解指定時區(qū)(time zone)

2.2、重寫bean

也可以重新 JacksonHttpMessageConvertersConfiguration 類中的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;
  }

}

在JacksonHttpMessageConvertersConfiguration這個類中,原來的方法是:

 @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,與之前版本的略有差異,不過可以看到,給 mappingJackson2HttpMessageConverter方法注入了一個ObjectMapper,那么我們可不可以直接修改ObjectMapper呢?當然可以,在Jackson的自動配置類(JacksonAutoConfiguration)中,可以發(fā)現(xiàn):

@ConditionalOnClass({Jackson2ObjectMapperBuilder.class})
  static class JacksonObjectMapperConfiguration {
    JacksonObjectMapperConfiguration() {
    }

    @Bean
    @Primary
    @ConditionalOnMissingBean
    ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
      return builder.createXmlMapper(false).build();
    }
  }

在這個內(nèi)部類里,提供了ObjectMapper。所以我們可以直接重新這個Bean,也可以達到全局修改日期格式的作用。

@Configuration
public class WebMvcConfig {


  @Bean
  ObjectMapper jacksonObjectMapper() {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
    return objectMapper;
  }
}

經(jīng)過測試,注解方式的優(yōu)先級要高于下面的兩種。

3、Jackson的簡單使用

  //測試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的詳細內(nèi)容,更多關(guān)于Springboot中使用Jackson的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決maven加載依賴時遇到的問題

    解決maven加載依賴時遇到的問題

    這篇文章主要介紹了解決maven加載依賴時遇到的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • JAVA?拷貝文件的幾種方式小結(jié)

    JAVA?拷貝文件的幾種方式小結(jié)

    本文主要介紹了JAVA拷貝文件的幾種方式,包含普通拷貝,mmap內(nèi)存映射的方式拷貝,零拷貝sendFile方式實現(xiàn)和多線程的方式實現(xiàn)拷貝,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • EL表達式的隱式對象_動力節(jié)點Java學院整理

    EL表達式的隱式對象_動力節(jié)點Java學院整理

    這篇文章主要介紹了EL表達式的隱式對象,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • java開發(fā)之SQL語句中DATE_FORMAT函數(shù)舉例詳解

    java開發(fā)之SQL語句中DATE_FORMAT函數(shù)舉例詳解

    要將日期值格式化為特定格式,請使用DATE_FORMAT函數(shù),下面這篇文章主要給大家介紹了關(guān)于java開發(fā)之SQL語句中DATE_FORMAT函數(shù)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • Java應(yīng)用程序開發(fā)學習之static關(guān)鍵字應(yīng)用

    Java應(yīng)用程序開發(fā)學習之static關(guān)鍵字應(yīng)用

    今天小編就為大家分享一篇關(guān)于Java應(yīng)用程序開發(fā)學習之static關(guān)鍵字應(yīng)用,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • JAVA與SQL 中的null與NULL解析

    JAVA與SQL 中的null與NULL解析

    這篇文章主要介紹了JAVA與SQL 中的null與NULL解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java NIO Buffer過程詳解

    Java NIO Buffer過程詳解

    這篇文章主要介紹了Java NIO Buffer過程詳解,緩沖區(qū)在java nio中負責數(shù)據(jù)的存儲。緩沖區(qū)就是數(shù)組。用于存儲不同數(shù)據(jù)類型的數(shù)據(jù)。,需要的朋友可以參考下
    2019-06-06
  • MapReduce實現(xiàn)TopN效果示例解析

    MapReduce實現(xiàn)TopN效果示例解析

    這篇文章主要為大家介紹了MapReduce實現(xiàn)TopN效果示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Java的ThreadContext類加載器的實現(xiàn)

    Java的ThreadContext類加載器的實現(xiàn)

    這篇文章主要介紹了Java的ThreadContext類加載器的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 一個合格JAVA軟件工程師應(yīng)該具備什么

    一個合格JAVA軟件工程師應(yīng)該具備什么

    一個合格JAVA軟件工程師應(yīng)該具備哪些專業(yè)技能,面試技巧是什么?本文為大家分享了2016版最新Java軟件工程師就業(yè)思維圖,感興趣的小伙伴們可以參考一下
    2016-11-11

最新評論