JSON是現在很流行的一種系統間交換資料的格式,結構簡單且容易閱讀,我們一起來看看怎麼使用Java 來玩玩JSON吧!
增加Maven dependency
使用的JSON lib 是 Jackson2 ,在POM.xml 只需加一個dependency
1 2 3 4 5 |
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.8</version> </dependency> |
Java物件轉JSON
以下程式,我們將Java物件 (Department) 轉為JSON string,並輸出到 console
(也可以直接輸出到檔案,如最後一行所示)
輸出結果如下,第一段輸出 JSON string 無斷行,第二段使用了 writerWithDefaultPrettyPrinter() 來輸出我們容易閱讀的格式
JSON轉Java物件
相反地,我們也可以直接把JSON string或是檔案轉為Java物件
輸出結果如下
使用@JsonView來控制會顯示的欄位
有時候,我們可能會因應不同的情境,而回傳不同數量的欄位。舉例來說,User物件中的password欄位可能就不適合傳到前台去(資安考量),但後台管理系統的密碼維護功能可能會需要這欄位。我們當然可以視狀況多寫幾個欄位數量不一的User DTO,但Jackson2提供了一種更有效率的作法!
- 視需求定義不同的 view,如下所示,Public 表示資料出現在「公開場合」,Private 則為後台管理使用(必須繼承Public 因為後台可以看到所有欄位),view name 可自訂
- 在DTO 類別的欄位上,分別指定適用的view
- 在輸出JSON時,可指定要套用哪個 view 來輸出
輸出結果如下,可以發現第一段輸出使用了Public view 所以看不到 password 欄位,而Private view 繼承了 Public view 所以全部的欄位都會顯示!
以上完整範例程式可參考 https://github.com/kennyliao1982/demo-jackson2
Facebook Comments