將一切都轉成 POJO 對象再說

作者 逅弈
來源公號:逅弈逐碼

在 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 中讀取出用戶的信息,然後進行批量的插入操作。

例如我們用戶信息表為:

將一切都轉成 POJO 對象再說


現在我們想要直接從該 Excel 文件中獲取一個 User 列表,只需要通過 EasyPoi來操作即可。

首先添加依賴:

將一切都轉成 POJO 對象再說

然後創建一個 User 類,並通過註解標識每一列:

將一切都轉成 POJO 對象再說

最後通過如下方法就可以將 Excel 文件轉換成一個 User 列表了:

將一切都轉成 POJO 對象再說

更多示例請查看官方文檔:

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>

然後創建一個 接口:

將一切都轉成 POJO 對象再說

最後通過以下代碼就可以獲取一個配置對象:

BaseConfig config = org.aeonbits.owner.ConfigFactory.create(BaseConfig.class);

我們也可以通過一個Map將所有已經創建好的配置對象緩存起來,這樣就不用每次都創建一個新對象了:

將一切都轉成 POJO 對象再說

更多詳情請參考官方文檔:

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;
}

最後通過如下方法就能拿到腳本中的參數:

將一切都轉成 POJO 對象再說

更多詳細信息請參考官方文檔:

https://github.com/cbeust/jcommander

總結

以上是跟大家分享的幾種常用的轉換獲得 POJO 對象的方法,歡迎大家分享其他好用的方法。


分享到:


相關文章: