Jackson是一個流行的Java庫,用于將Java對象序列化為JSON格式或解析JSON而構建Java對象。Jackson 序列化庫提供了三個主要的機制:
- Streaming API:簡單的基于流的API
- Annotation-based Object Mapper:基于Jackson Annotations (批注) API的對象映射對象
- Tree Model:處理JSON數據的樹形模型(基于Dom模型編碼、反編碼操作)
我們將重點關注 Annotation-based Object Mapper機制。使用這種機制,可以在POJO (Plain Old Java Object)實體上使用注釋配置來改變序列化行為。
下面是一個簡單的Java類:
class Employee { private String name; private int age; private String position; public Employee(String name, int age, String position) { this.name = name; this.age = age; this.position = position; } }
要將Employee類轉換為JSON字符串,可以執行以下操作:
ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(new Employee("Alice", 25, "Manager")); System.out.println(json);
輸出結果為:
{"name":"Alice","age":25,"position":"Manager"}
我們可以看到,Jackson默認使用字段名稱作為JSON屬性名稱。但是,我們可以使用 @JsonProperty注釋指定不同的屬性名稱。
以下是相同的Employee類,但使用@JsonProperty注釋更改了屬性名稱:
class Employee { @JsonProperty("full_name") private String name; @JsonProperty("years_of_service") private int age; @JsonProperty("job_title") private String position; public Employee(String name, int age, String position) { this.name = name; this.age = age; this.position = position; } }
在這個版本中,我們使用三個不同的@JsonProperty注釋改變了字段名稱。
轉換為JSON的代碼仍然相同:
ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(new Employee("Alice", 25, "Manager")); System.out.println(json);
輸出結果為:
{"full_name":"Alice","years_of_service":25,"job_title":"Manager"}
我們可以看到,屬性名稱已更改為使用@JsonProperty注釋中指定的名稱。這樣,我們可以將Java類轉換為我們需要的任何JSON格式。
上一篇vue班級卡片列表