當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Boot jackson配置使用详解
生活随笔
收集整理的這篇文章主要介紹了
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: trueCompanyVO.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配置使用详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: access开发精要(2)-参照完整性
- 下一篇: Nginx学习_狂神