1. 程式人生 > >spring boot 最佳實踐(一)--使用jackson

spring boot 最佳實踐(一)--使用jackson

目前java json解析工具有阿里的fastjson,google的GSON,以及SpringMVC 預設的解析工具Jackson。

Maven引入jar包

spring-boot-starter-web預設引入了以下依賴:

<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.8.0</version
>
</dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.7</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId
>
<artifactId>jackson-databind</artifactId> <version>2.8.7</version> </dependency>

Jackson從2.0開始改用新的包名fasterxml;1.x版本的包名是codehaus。

基礎用法

1. 初始化

在spring boot專案裡建議全域性初始化ObjectMapper

@Configuration
public class AppConfig{
  @Bean
  public ObjectMapper ObjectMapper
(){ ObjectMapper objectMapper=new ObjectMapper(); return objectMapper; } }

2. 基本用法

//將json字串轉換成物件
Map map = objectMapper.readValue(jsonString, Map.class);
//轉換物件型別
SomethingPOJO pojo = objectMapper.convertValue(map, SomethingPOJO.class);
//將物件轉換成json字串
Sting string = objectMapper.writeValueAsString(pojo);
//將json字串轉換成List
JavaType javaType = mapper.getTypeFactory()
.constructParametricType(List.class, Person.class);
List<Person> jsonToPersonList = objectMapper.readValue(arrayToJson, mapType);

3. 列舉

public enum TypeEnumWithValue {
    TYPE1(1, “Type A”), TYPE2(2, “Type 2”);
    private Integer id;
    private String name;

    /** 
    * @JsonValue只能標識在類的唯一個方法上,表示序列化時使用當前方法轉換本物件。
    */
    @JsonValue
    public String getName() {
        return name;
    }

   /**
   * @JsonCreator標識在一個靜態方法上,表示反序列化時使用當前方法初始化本物件。
   */
    @JsonCreator
    public static TypeEnumWithValue  create(String val) {
        TypeEnumWithValue [] units = TypeEnumWithValue.values();
        for (TypeEnumWithValue  unit : units) {
            if (unit.getName().equals(val)) {
                return unit;
            }
        }
        throw new IllegalArgumentException();
       }
    }

4. 配置ObjectMapper

ObjectMapper objectMapper=new ObjectMapper();
// 忽略json字串中不識別的屬性
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// 忽略無法轉換的物件 “No serializer found for class com.xxx.xxx”
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);

在JDK8專案中使用jackson

在JDK8專案中使用JDK8新特性的話,jackson需要新增依賴包。

<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.8.6</version>
</dependency>

1. 註冊Module


@Configuration
public class AppConfig{
  @Bean
  public ObjectMapper ObjectMapper(){
   ObjectMapper mapper = new ObjectMapper()
   .registerModule(new ParameterNamesModule())
   .registerModule(new Jdk8Module())
   .registerModule(new JavaTimeModule());
   return objectMapper;
  }
}

也可以使用自動註冊的方式:

ObjectMapper mapper = new ObjectMapper();
mapper.findAndRegisterModules();

2. jdk8 time

jdk8使用了新的時間包,在時間物件上需要做的配置。

import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat
public class POJO{
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime time;

    //getter,setter...
}

相關推薦

spring boot 最佳實踐--使用jackson

目前java json解析工具有阿里的fastjson,google的GSON,以及SpringMVC 預設的解析工具Jackson。 Maven引入jar包 spring-boot-starter-web預設引入了以下依賴: <dependen

Spring Boot 最佳實踐快速入門

我想 並不是 系統 exe 輸出 開發環境 模型 hot 根據 一、關於Spring Boot 在開始了解Spring Boot之前,我們需要先了解一下Spring,因為Spring Boot的誕生和Spring是息息相關的,Spring Boot是Spring發展到一定程

Spring Boot 最佳實踐集成Jsp與生產環境部署

內容 tro conf 相關 安裝 packaging exc 詳細介紹 更新 一、簡介 提起Java不得不說的一個開發場景就是Web開發,也是Java最熱門的開發場景之一,說到Web開發繞不開的一個技術就是JSP,因為目前市面上仍有很多的公司在使用JSP,所以本文就來介紹

Spring Boot 最佳實踐模板引擎Thymeleaf集成

data 圖層 int app 創建模板 原因 xmlns make 使用場景 一、Thymeleaf介紹 Thymeleaf是一種Java XML / XHTML / HTML5模板引擎,可以在Web和非Web環境中使用。它更適合在基於MVC的Web應用程序的視圖層提供X

Spring Boot 最佳實踐模板引擎FreeMarker整合

一、FreeMaker介紹 FreeMarker是一款免費的Java模板引擎,是一種基於模板和資料生成文字(HMLT、電子郵件、配置檔案、原始碼等)的工具,它不是面向終端使用者的,而是一款程式設計師使用的元件。 FreeMarker最初設計是用來在MVC模式的Web

Spring Boot 最佳實踐Spring Data JPA 操作 MySQL 8

一、Spring Data JPA 介紹 JPA(Java Persistence API)Java持久化API,是 Java 持久化的標準規範,Hibernate是持久化規範的技術實現,而Spring Data JPA是在 Hibernate 基礎上封裝的一款框架

Spring Boot學習實踐1建立一個簡單的spring boot應用

一、使用idea建立一個簡單的Spring Boot應用程式 環境準備: idea:2018.2 jdk: 1.8 spring boot:是2.0版本以上的 以上環境可以根據實際情況去調整。 (1)首先找到idea建立應用的New Project,選擇好

spring boot 最佳實踐--SpEL

SpEL 擁有許多特性,包括: 表示式語言支援以下功能 文字表達式 引用Bean屬性和方法 類表示式 訪問 properties, arrays, lists, maps 布林和關係運算符 正則表示式 方法呼叫 關係運算符 引數 呼叫建構函式 構造Arra

Spring Boot / Spring MVC 入門實踐 :環境搭建與第一個專案

宣告 本系列文章系本人原創,歡迎轉載,轉載請註明出處。 本系列文章通過具體的例子,介紹如何通過Spring Boot來幫助簡化Spring MVC開發Web Application的過程,旨在通過具體的實踐,使讀者能夠入門利用Spring Boot開發Web

spring boot學習系列

web服務器 應用程序 spring 控制器 做什麽 spring boot開發第一個應用程序1、spring boot是什麽?2、spring boot容易上手嗎?寫這篇文章技術文章,主要是記錄日常的學習以及理解。我們重新認識一下spring假設你受命使用spring開發一個簡單的hel

Spring Boot常見問題Maven依賴加載失敗

bsp 加載失敗 如何 依賴 pri oot 分享 alt size   最近兩天學習Spring Boot過程中,pom.xml文件老是報錯。最終發現,是Maven加載依賴失敗的緣故。Maven部分包加載失敗時,如何重新加載這些包,下面提供簡單的解決方式。 S

Spring Boot參考教程 SpringBoot概述及Hello World

自動 構建項目 測試 run world tar 建模 持久化 開啟 前言 筆者閑來無事,寫此文檔,不足之處,海涵! 本文檔將詳細介紹Sping Boot特性,使用方法,及與第三方框架的集成應用。使開發人員可以快速的了解SpringBoot,熟練的使用S

1、spring-boot學習筆記簡單入門

ava project nal run plugin mailto 5.4 安全 class a 一、新建普通Maven工程 pom.xml <parent> <groupId>org.springframework.boot</gr

筆記61 Spring Boot快速入門

user demo model 前端 req oot 項目 htm 顯示 IDEA+Spring Boot快速搭建 一、IDEA創建項目 略 項目創建成功後在resources包下,屬性文件application.properties中,把數據庫連接屬性加上,同時可以設置服

Spring Boot簡單入門

上個月第一次接觸了Spring Boot,當時摸索了一下便上手寫程式碼了,雖然沒什麼問題,但是沒什麼比自己從頭搭建一個更能瞭解其原理的了,於是今天自己根據網上的教程親手搭了一遍,踩了一些不該踩的坑,浪費了很多時間,特此記錄,寫上一個簡單的登入例項,方便後來的初學者。(登入例項在下篇詳細展示) 先

Spring Boot 學習筆記—— 快速搭建Spring Boot專案

一、前言 Spring Boot是Spring系列框架的整合,使用“習慣優於配置”的理念快速搭建專案,在專案打包時還能根據需求打包為jar(內建servlet容器)或war檔案,相對以前的Spring、Spring MVC來說Spring Boot並沒有技術上的升級,而是為我們做好了大部

spring boot 整合 jpa -- 之基礎配置

spring boot 整合 jpa (二) – 之資料操作 https://blog.csdn.net/qq_41463655/article/details/82939560 spring boot 整合 jpa (三) – 之表關係對映 https://blog.csdn.ne

Spring Boot 學習總結 ---入口類和@SpringBootApplication

入口類和@SpringBootApplication SpringBoot通常有一個名為*Application的入口類,入口類裡有一個main方法,這個main方法是一個標準的java應用的入口方法。在main方法中使用SpringApplication.run(*App

spring Boot框架學習

參見解決方案: 載入別人的專案出現,證明是版本問題, 版本和JUnuit 包不造成的。 更換版本解決。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apa

spring boot 整合 jpa

先建立 springboot 專案 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns: