日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot jackson配置使用详解

發布時間:2025/3/12 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot jackson配置使用详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring Boot系列-json框架jackson配置詳解

  • T1 - 前言

    目前Java最常見的3中JSON操作框架分別為Gson、Jackson、FastJson,該篇文章主要講解jackson在SpringBoot環境中各配置項的具體作用。

  • T2 - 環境依賴

    jackson是spring-boot的web/webflux框架默認依賴的json庫,要使用SpringBoot的jackson自動化配置只需保證SpringBoot的web/webflux依賴引入。下文配置demo為了方便調試引入了個人的swagger配置框架:

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- swagger自動配置依賴,為方便測試 --><dependency><groupId>io.github.wilson-he</groupId><artifactId>swagger2-spring-boot-starter</artifactId></dependency> </dependencies>
  • T3 - application.yml樣例講解

    spring:jackson:# 設置屬性命名策略,對應jackson下PropertyNamingStrategy中的常量值,SNAKE_CASE-返回的json駝峰式轉下劃線,json body下劃線傳到后端自動轉駝峰式property-naming-strategy: SNAKE_CASE# 全局設置@JsonFormat的格式patterndate-format: yyyy-MM-dd HH:mm:ss# 當地時區locale: zh# 設置全局時區time-zone: GMT+8# 常用,全局設置pojo或被@JsonInclude注解的屬性的序列化方式default-property-inclusion: NON_NULL #不為空的屬性才會序列化,具體屬性可看JsonInclude.Include# 常規默認,枚舉類SerializationFeature中的枚舉屬性為key,值為boolean設置jackson序列化特性,具體key請看SerializationFeature源碼serialization:WRITE_DATES_AS_TIMESTAMPS: true # 返回的java.util.date轉換成timestampFAIL_ON_EMPTY_BEANS: true # 對象為空時是否報錯,默認true# 枚舉類DeserializationFeature中的枚舉屬性為key,值為boolean設置jackson反序列化特性,具體key請看DeserializationFeature源碼deserialization:# 常用,json中含pojo不存在屬性時是否失敗報錯,默認trueFAIL_ON_UNKNOWN_PROPERTIES: false# 枚舉類MapperFeature中的枚舉屬性為key,值為boolean設置jackson ObjectMapper特性# ObjectMapper在jackson中負責json的讀寫、json與pojo的互轉、json tree的互轉,具體特性請看MapperFeature,常規默認即可mapper:# 使用getter取代setter探測屬性,如類中含getName()但不包含name屬性與setName(),傳輸的vo json格式模板中依舊含name屬性USE_GETTERS_AS_SETTERS: true #默認false# 枚舉類JsonParser.Feature枚舉類中的枚舉屬性為key,值為boolean設置jackson JsonParser特性# JsonParser在jackson中負責json內容的讀取,具體特性請看JsonParser.Feature,一般無需設置默認即可parser:ALLOW_SINGLE_QUOTES: true # 是否允許出現單引號,默認false# 枚舉類JsonGenerator.Feature枚舉類中的枚舉屬性為key,值為boolean設置jackson JsonGenerator特性,一般無需設置默認即可# JsonGenerator在jackson中負責編寫json內容,具體特性請看JsonGenerator.Featureswagger:enabled: truedocket:base-package: io.github
  • T4 - 測試樣例

    application.yml

    spring:jackson:# 常用請求與響應自動轉下劃線,空值字段不傳輸property-naming-strategy: SNAKE_CASEdefault-property-inclusion: non_nullswagger:docket:base-package: io.github.jacksonenabled: true

    CompanyVO.java

    /*** CompanyVO*/@Data@Accessors(chain = true)public class CompanyVO {private String companyName;@JsonFormatprivate Date createTime;private Integer employeeNum;}

    CompanyController.java

    @RestController@RequestMapping("/company")@Apipublic class CompanyController {@Resourceprivate ObjectMapper objectMapper;@PostMapping("/")public CompanyVO post(@RequestBody CompanyVO vo) {return vo;}@GetMapping("/")public String objectToJson() throws JsonProcessingException {// 使用jackson的objectMapper將對象根據SNAKE_CASE策略轉成json字符串return objectMapper.writeValueAsString(new CompanyVO().setCompanyName("company").setEmployeeNum(11));}}

    樣例測試效果圖:

    • 請求參數需傳下劃線,駝峰式無效(阿里、微信等大部分接口都是以下滑線傳參,所以個人推薦使用SNAKE_CASE策略)

    • 響應結果轉下劃線,空屬性不轉json(不傳employeeNum)

    • Spring容器jackson的ObjectMapper將對象轉json時根據SNAKE_CASE策略,當要把對象轉成json字符串請求第三方接口或以對象接收第三方接口參數時就無需考慮下劃線適配轉換的問題了

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Spring Boot jackson配置使用详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。