2016-01-27 2 views
0

Я немного смущен. Мне нужно сериализовать объект в строку json. Я использую Jackson в качестве библиотеки.Дата изменения после сериализации Объект на строку с Джексоном Json

My Pojo Class Stage имеет атрибут fromDate и его номер util.date.

public class Stage { 

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd.MM.yyyy", timezone="UTC+1") 
private Date fromDate; 
... 

Перед сериализации FromDate имеет это значение: Wed May 11 00:00:00 CEST 2016.

Мой метод сериализации выглядит следующим образом:

public static String serialize(Stages stages) throws JsonProcessingException { 
     ObjectMapper objectMapper = new ObjectMapper(); 
     String s = objectMapper.writeValueAsString(stages); 
     return s; 
    } 

Но после того, как сериализации мой объект по dateFrom в JSON Струнный еси это значение: ..."fromDate":"10.05.2016".... Таким образом, дата ошибочна.

Я использовал шаблон @JsonFormat и попробовал его также с конфигурацией ObjectMapper.

public static String serialize(Stages stages) throws JsonProcessingException { 
    ObjectMapper objectMapper = new ObjectMapper(); 
    SimpleDateFormat dateFormat = new SimpleDateFormat(Util.SDF_dd_mm_yyyy); 
    objectMapper.setDateFormat(dateFormat); 
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC+1")); 
    String s = objectMapper.writeValueAsString(stages); 
    return s; 
} 

Но дата не мой ожидаемым: ..."fromDate":"11.05.2016"...

Что делать я неправильно?

ответ

1

Я думаю, что это еще раз вопрос времени. Сериализованная дата выглядит так, как в UTC (?), Поэтому на самом деле правильно, что вы видите 10.05, вызывают 2016-11-05 00:00 UTC + 1 действительно 2016-10-05 23:00 UTC ..

Возможно, вам стоит попробовать адаптировать код, в котором вы читаете это сериализованное значение, чтобы учесть, в какой временной зоне дата была сериализована.

+0

Я посмотрел, в какое время наступила дата, и это было 'CET'. Измените часовой пояс на 'timezone =" CET ", и он сработал. Благодарю. – Patrick

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