在 WEB 項目中返回 JSON 數據是常見的交互形式,在 Spring Boot 中這一切都變得十分簡單。So easy!!! 你所需具備的基礎 "什麼是 Spring Boot?" "Spring Boot 核心配置文件詳解" "Spring Boot 開啟的 2 種方式" "Spring Bo ...
在 WEB 項目中返回 JSON 數據是常見的交互形式,在 Spring Boot 中這一切都變得十分簡單。So easy!!!
你所需具備的基礎
- 什麼是 Spring Boot?
- Spring Boot 核心配置文件詳解
- Spring Boot 開啟的 2 種方式
- Spring Boot 自動配置原理、實戰
- Spring Boot 2.x 啟動全過程源碼分析
更多請在Java技術棧微信公眾號後臺回覆關鍵字:boot。
如何返回 JSON 數據?
在 Spring Boot 中返回 JSON 數據很簡單,如下幾步。
加入依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
除了 Spring Boot 必須自帶的 parent 依賴外,僅僅只需要加入這個 spring-boot-starter-web
包即可,它會自動包含所有 JSON 處理的包,如下圖所示。
這個插件感謝知識星球球友的分享,簡單不錯,點擊文章底部的閱讀原文,可以加入一起學習。
返回 XML 數據格式定義
1)定義返回方式
在 Controller 類上面用 @RestController
定義或者在方法上面用 @ResponseBody
定義,表明是在 Body 區域輸出數據。
下麵是使用示例:
@RestController
public class JsonTest {
@GetMapping(value = "/user/{userId}")
public User getUserInfo(@PathVariable("userId") String userId) {
User user = new User("Java技術棧", 18);
user.setId(Long.valueOf(userId));
return user;
}
}
2)自定義輸出格式
上面的方法直接返回對象,對象會自動轉換為 XML 格式,不過是預設的標簽,可以通過以下標簽進行自定義 XML 格式。
public class User {
@JsonProperty("user-name")
private String userName;
private Long id;
private Integer age;
@JsonIgnore
private String address;
@JsonInclude(JsonInclude.Include.NON_NULL)
private String memo;
// get set 略
}
程式輸出:
{"id":1,"age":18,"user-name":"Java技術棧"}
上面演示了幾個常用的註解。
@JsonProperty: 可用來自定義屬性標簽名稱;
@JsonIgnore: 可用來忽略不想輸出某個屬性的標簽;
@JsonInclude: 可用來動態包含屬性的標簽,如可以不包含為 null 值的屬性;
更多註解可以查看這個包:
如何手動完成對象 和 Json 的互轉?
jackson-databind
包裡面有一個 com.fasterxml.jackson.databind.ObjectMapper
類可以完成對象和 Json 數據的互轉,下麵是一個簡單的合作示例。
ObjectMapper objectMapper = new ObjectMapper();
String userJsonStr = objectMapper.writeValueAsString(user);
User jsonUser = objectMapper.readValue(userJsonStr, User.class);
更多相關的使用及原理可以查看這個包。
好了,Spring Boot 返回 JSON 格式數據就是這麼簡單,有什麼不懂的可以點擊閱讀原文加入星球和大家一起學習討論。
《Spring Boot 返回 XML 數據》棧長正在拼命寫作中,過兩天分享。
本文原創首發於微信公眾號:Java技術棧(id:javastack),關註公眾號在後臺回覆 "boot" 可獲取更多,轉載請原樣保留本信息。