2015-11-28 2 views
1

Json строки задается Джексон содержит время как { «время»: «19:31:00»}Gson: время Deserialize сериализовать Джексон

Я десериализации его с помощью Gson, чтобы получить java.sql.Time объект обратно.

Какой DateFormat следует установить в gson?

В настоящее время я использую

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

ответ

1

Вы можете зарегистрировать JSONDeserializer для java.sql.Time с Gson.

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])); 
    } 

} 
0

Попробуйте сначала получить дату в виде строки, а затем преобразовать его в актуальном состоянии с помощью new SimpleDateFormat("HH:mm:ss").parse(timeStr)

Смежные вопросы