Gson dateformat解析/输出unix-timestamps

时间:2016-12-27 15:42:21

标签: android gson date-format unix-timestamp

我正在使用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即可。

2 个答案:

答案 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