我正在使用Gson序列化/反序列化我的pojos,目前正在寻找一种干净的方式来告诉Gson将日期属性解析/输出为unix-timestamps。 这是我的尝试:
Gson gson = new GsonBuilder().setDateFormat("U").create();
来自PHP,其中“U”是用于解析/输出日期为unix-timestamps的dateformat,在运行我的尝试代码时,我得到此RuntimeException:
未知的模式字符'U'
我假设Gson在引擎盖下使用SimpleDateformat,但没有定义字母“U”。
我可以写一个DateTypeAdapter
并在GsonBuilder
中注册,但我正在寻找一种更清晰的方法来实现这一点。只需更改DateFormat
即可。
答案 0 :(得分:13)
创建自定义DateTypeAdapter
是可行的方法。
MyDateTypeAdapter
public class MyDateTypeAdapter extends TypeAdapter<Date> {
@Override
public void write(JsonWriter out, Date value) throws IOException {
if (value == null)
out.nullValue();
else
out.value(value.getTime() / 1000);
}
@Override
public Date read(JsonReader in) throws IOException {
if (in != null)
return new Date(in.nextLong() * 1000);
else
return null;
}
}
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class,new MyDateTypeAdapter()).create();
答案 1 :(得分:-1)
时间戳只是<div id="myList"></div>
,因此您可以在POJO中使用它。如果字段丢失,请使用long
获取Long
。
null