GsonでjsonのタイムスタンプをDate型に変換
以下のようなResultsetのgetTimestamp()
で取得したようなタイムスタンプを含むjsonを、GsonでDate型のフィールドを持つオブジェクトに変換する。
[
{
"id": "1",
"date": "2022-07-18 20:01:54.0"
}
{
"id": "2",
"date": "2022-07-18 21:31:15.0"
}
]
GsonBuilder
import java.util.Date;
public class SampleDTO {
private int id;
private Date date;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public SampleDTO(int id, Date date) {
this.id = id;
this.date = date;
}
}
InputStream in = conn.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss.S").create();
JsonReader jr = new JsonReader(br);
Type listType = new TypeToken<List<SampleDTO>>() {
}.getType();
List<SampleDTO> messages = gson.fromJson(jr, listType);
Gson()
の代わりにGsonBuilder()
でインスタンスを生成し、.setDateFormat()
でjsonのタイムフォーマットにあわせた指定をすることで、タイムスタンプをオブジェクトに変換できる。