2017-01-31 8 views
0

я пытаюсь использовать пользовательский формат для моей даты, как это:Пользовательская Дата десериализация: Джексон

public class CustomDateMappingDeserialize extends JsonDeserializer<Date>{ 

    @Override 
    public Date deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext) throws IOException, JsonProcessingException { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
      String date = paramJsonParser.getText(); 
      try { 
       Date formattedDate= format.parse(date); 
       return formattedDate; 
      } catch (ParseException e) { 
       throw new RuntimeException(e); 
      } 

    } 

} 

дата 2011-04-08 9:00:00 и после разбора я получаю той же даты в FormattedDate и без исключения.

Есть ли что-то, что мне не хватает?

Благодаря

+0

Печать на 'formattedDate' show 'Пт Апр 08 00:00:00 CEST 2011' для меня. В средние месяцы, как и ожидалось. В чем проблема ? (Я удивляюсь, что это работает без шаблона времени, если честно;)) – AxelH

ответ

2

Дело в том, что дата объекта всегда будет добавлять время, так что если вы хотите, чтобы вырезать его можно преобразовать его в строку, как это:

String input = paramJsonParser.getText(); 
DateFormat inputFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); // this has to be like your input 
Date date = inputFormatter.parse(input); 

DateFormat outputFormatter = new SimpleDateFormat("yyyy-MM-dd"); 
String output = outputFormatter.format(date); // Output : yyyy-MM-dd 
+0

'Дело в том, что дата объекта всегда будет добавлять время'. При использовании SimpleDateFormat (без времени) это не восстановит значение, поэтому это будет '00: 00: 00'. Таким образом, дата будет иной. Но результат правильный, если это то, что задано. – AxelH

+0

Действительно @AxelH, я лично не одобряю потерять информацию, которая может пригодиться, но я догадался, что он этого хочет, поэтому я просто разместил ее. Решение, которое я использую, является сериализатором, чтобы скрыть информацию, которую я не хочу видеть в gui, но сохраняю всю информацию в db. Это может быть интересно для него тоже. – Nico

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