ObjectMapper 是一款非常好用的 json 轉換工具,可以幫助我們完成 json 和 Java 的 Object 的互相轉換
ObjectMapper 是由 Jackson library 所提供的一個功能,所以只要在 maven 中加入 spring-boot-starter-web
的 dependency 就可以了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
先定義一個 User class
public class User {
private int id;
private String name;
// 省略constructor, getter, setter
}
使用 ObjectMapper 完成 json 和 Java Object、List、Map 之間的互轉
import java.util.*;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class MainTest {
public static void main(String[] args) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
// User Object 轉 json
User user1 = new User(123, "John");
String json = objectMapper.writeValueAsString(user1);
// json 轉 User Object
User user2 = objectMapper.readValue(json, User.class);
// List<User> 轉 json
List<User> ulist = new ArrayList<>();
User user4 = new User(123, "John");
ulist.add(user4);
String ujson = objectMapper.writeValueAsString(ulist);
// json 轉 List<User>
List<User> urlist = objectMapper.readValue(ujson, new TypeReference<List<User>>() {});
// Map<String, User> 轉 json
HashMap<String, User> umap = new HashMap<>();
User user3 = new User(123, "John");
umap.put("John", user3);
String mjson2 = objectMapper.writeValueAsString(umap);
// json 轉 Map<String, User>
Map<String, User> urMap = objectMapper.readValue(mjson2, new TypeReference<HashMap<String, User>>() {});
}
}
如果想了解更多 Spring Boot 的用法,也歡迎參考我開設的線上課程 「Java 工程師必備!Spring Boot 零基礎入門」 (輸入折扣碼「HH202501KU」即可享 85 折優惠)。