Gson:将杰克逊序列化的时间反序列化

时间:2015-11-28 08:02:47

标签: java jackson gson deserialization date-format

杰克逊给出的Json字符串包含{"时间":" 19:31:00"}

我想使用Gson反序列化它以获取java.sql.Time对象。

我应该将什么DateFormat设置为gson?

目前,我正在使用

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create(); 

2 个答案:

答案 0 :(得分:1)

您可以使用Gson为java.sql.Time注册JSONDeserializer。

public static void main(String[] args) {
    Gson gson = new GsonBuilder().registerTypeAdapter(Time.class, new MyTimeJsonDeserializer()).create();
    MyTime time = gson.fromJson("{\"time\": \"19:31:00\"}", MyTime.class);
    System.out.println(time.getTime());
}

public static class MyTime{

    private Time time;

    public Time getTime() {
        return time;
    }

    public void setTime(Time time) {
        this.time = time;
    }
}

public static class MyTimeJsonDeserializer implements JsonDeserializer<Time>{

    @Override
    public Time deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
            throws JsonParseException {
        String time = json.getAsString();
        String[] parts = time.split(":");
        return new Time(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Integer.parseInt(parts[2]));
    }

}

答案 1 :(得分:0)

尝试首先将日期作为字符串,然后使用new SimpleDateFormat("HH:mm:ss").parse(timeStr)

将其转换为日期