作者 逅弈
來源公號:逅弈逐碼
在 java 項目中,和我們打交道最多的就是對象了,我們最擅長處理的也是對象。
本篇文章我將和大家分享幾種創建 POJO 對象的方法。
FastJson
第一種,將 JSON 字符串轉換成 POJO 對象,相信大家都不陌生。
JSON 是各種系統之間交互使用的最多的數據格式,但是我們直接處理 JSON 又不太方便,一般都是將其轉換成對應的 POJO 對象,然後進行處理。
假設我們通過 api 獲取到一個用戶的信息如下:
{
"userId" : 2003,
"name" : "張三",
"age" : 28
}
此時我們可以創建一個對應的 User 類,如下:
public class User {
private Long userId;
private String name;
private Integer age;
// 省略getter、setter
}
現在我們要想將該 json 字符串轉換成 User 對象,
首先添加依賴:
<dependency>
<groupid>com.alibaba/<groupid>
<artifactid>fastjson/<artifactid>
<version>1.2.58/<version>
/<dependency>
然後通過如下方法進行轉換:
User user = JSONObject.parseObject(jsonStr, User.class);
這樣我們就可以通過 user 對象進行後續的操作了。
EasyPoi
有時我們需要操作 Excel ,例如從 Excel 中讀取出用戶的信息,然後進行批量的插入操作。
例如我們用戶信息表為:
現在我們想要直接從該 Excel 文件中獲取一個 User 列表,只需要通過 EasyPoi來操作即可。
首先添加依賴:
然後創建一個 User 類,並通過註解標識每一列:
最後通過如下方法就可以將 Excel 文件轉換成一個 User 列表了:
更多示例請查看官方文檔:
https://gitee.com/lemur/easypoi
owner
有時我們需要將配置文件轉換成 POJO 對象,雖然可以通過 Spring 的 @Configuration 來轉換,但是如果我們的項目沒有依賴 Spring 的話,我們可以用另外一個小巧的工具來轉換:owner。
假設我們有一個配置文件 base-config.properties:
basePackage=io.bitchat
serverPort=8864
首先添加依賴:
<dependency>
<groupid>org.aeonbits.owner/<groupid>
<artifactid>owner/<artifactid>
<version>1.0.10/<version>
/<dependency>
然後創建一個 接口:
最後通過以下代碼就可以獲取一個配置對象:
BaseConfig config = org.aeonbits.owner.ConfigFactory.create(BaseConfig.class);
我們也可以通過一個Map將所有已經創建好的配置對象緩存起來,這樣就不用每次都創建一個新對象了:
更多詳情請參考官方文檔:
https://github.com/lviggiano/owner
JCommander
最後介紹一個處理 shell 命令時可能會用到的工具,JCommander。
例如,我們的項目可能會通過如下的命令來啟動:
java xxx-server.jar -mode standalone -serverPort 8864
在 jar 包中包含 main 方法的類,在運行時,其實是通過 String[] args 來接收參數的,這時如果我們能將這些參數轉換成 POJO 對象的話,那將會是一件非常愉快的事。
首先添加依賴:
<dependency>
<groupid>com.beust/<groupid>
<artifactid>jcommander/<artifactid>
<version>1.72/<version>
/<dependency>
然後創建一個 POJO 類:
private static class ServerStartupParameter {
@Parameter(names = "-mode", description = "Server mode. 1 : standalone mode 2 : cluster mode.")
private Integer mode;
@Parameter(names = "-serverPort", description = "Server port. If null will use default port: 8864")
private Integer serverPort;
}
最後通過如下方法就能拿到腳本中的參數:
更多詳細信息請參考官方文檔:
https://github.com/cbeust/jcommander
總結
以上是跟大家分享的幾種常用的轉換獲得 POJO 對象的方法,歡迎大家分享其他好用的方法。
閱讀更多 程序員BUG 的文章