2015-11-11 3 views
1

Я использую Jackson для сериализации POJO для JSON, но у меня возникают трудности с форматированием дат. Я наткнулся на этой вики на сайте Джексона: http://wiki.fasterxml.com/JacksonFAQDateHandlingJackson - объекты для сериализации даты

С помощью этой статьи, я сделал следующее:

objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false); 

Печатается Дата объектов в формате ISO-8601, который является то, что я хочу. За исключением «+0000». В соответствии с ISO-8601 формат + hhmm - это временной интервал от UTC. Есть ли способ в Джексоне отключить смещение по времени? Или мне просто нужно указать пользовательский формат даты?

+0

Также смотрите: https://stackoverflow.com/questions/45276807/iso8601-with-milliseconds-in-json-using-jackson –

ответ

2

Я думаю, что ваш лучший выбор - просто перейти в новый формат даты при сериализации. Например:

final ObjectMapper objectMapper = new ObjectMapper(); 
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm")); 

Основываясь на JavaDocs on github, который дает некоторое представление о том, как определяются дата форматирования, без указания своего собственного, я думаю, что вы можете только использовать либо числовые метки или встроенные в формате ISO, который определяет Джексон. Документы для справки:

/** 
    * Feature that determines whether Date (and date/time) values 
    * (and Date-based things like {@link java.util.Calendar}s) are to be 
    * serialized as numeric timestamps (true; the default), 
    * or as something else (usually textual representation). 
    * If textual representation is used, the actual format is 
    * one returned by a call to 
    * {@link com.fasterxml.jackson.databind.SerializationConfig#getDateFormat}: 
    * the default setting being {@link com.fasterxml.jackson.databind.util.StdDateFormat}, 
    * which corresponds to format String of "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
    * (see {@link java.text.DateFormat} for details of format Strings). 
    *<p> 
    * Note: whether this feature affects handling of other date-related 
    * types depend on handlers of those types, although ideally they 
    * should use this feature 
    *<p> 
    * Note: whether {@link java.util.Map} keys are serialized as Strings 
    * or not is controlled using {@link #WRITE_DATE_KEYS_AS_TIMESTAMPS}. 
    *<p> 
    * Feature is enabled by default, so that date/time are by default 
    * serialized as timestamps. 
    */ 
    WRITE_DATES_AS_TIMESTAMPS(true), 
+0

я боялся, что это будет мой единственный вариант, но Я просто хотел убедиться, что я не очень хорошо знаком с Джексоном. – user972276

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