Java Gson:反序列化由Jackson序列化的时间

Java Gson:反序列化由Jackson序列化的时间,java,jackson,gson,deserialization,date-format,Java,Jackson,Gson,Deserialization,Date Format,Jackson给出的Json字符串将时间包含为{“time”:“19:31:00”} 我想使用Gson对其进行反序列化,以获取java.sql.Time对象 我应该在gson中设置什么日期格式 目前,我正在使用 Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create(); 首先尝试以字符串形式获取日期,然后使用新的SimpleDataFormat(“HH:mm:ss”)将其转换为日期。parse(

Jackson给出的Json字符串将时间包含为{“time”:“19:31:00”}

我想使用Gson对其进行反序列化,以获取
java.sql.Time
对象

我应该在gson中设置什么日期格式

目前,我正在使用

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

首先尝试以字符串形式获取日期,然后使用新的SimpleDataFormat(“HH:mm:ss”)将其转换为日期。parse(timeStr)您可以使用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]));
    }

}
publicstaticvoidmain(字符串[]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());
}
公共静态类MyTime{
私人时间;
公共时间getTime(){
返回时间;
}
公共无效设置时间(时间){
这个时间=时间;
}
}
公共静态类MyTimeJsonDeserializer实现JsonDeserializer{
@凌驾
公共时间反序列化(JsonElement json,类型typeOfT,JsonDeserializationContext)
抛出JsonParseException{
String time=json.getAsString();
String[]parts=time.split(“:”);
返回新时间(Integer.parseInt(部分[0])、Integer.parseInt(部分[1])、Integer.parseInt(部分[2]);
}
}