Проблема с форматом даты поставщика JAX-RS Jackson Json

WRT на следующий вопрос:

Сериализация формата даты Джерси + Джексон JSON - как изменить формат или использовать собственный JacksonJsonProvider.

я хочу знать

  • Указывает ли Джексон, что формат даты json должен быть нормализован до целого числа времени unix?

Последующие вопросы ...

  • Изменилась ли его позиция в последнее время?
  • Разве формат даты не должен быть нормализован к тому же формату, что и вывод jaxb xml?
  • почему, почему нет?
  • прилагаются ли какие-либо усилия для решения этой проблемы?
  • Предоставил ли RestEasy смягчение провайдера json, которое выводит дату json в общеузнаваемом формате даты?

person Blessed Geek    schedule 27.06.2012    source источник


Ответы (2)


Извините, люди, что кричу вслух - я нашел ответы здесь

http://wiki.fasterxml.com/JacksonFAQDateHandling,

здесь

http://wiki.fasterxml.com/JacksonFAQ#Serializing_Dates,

здесь

http://wiki.fasterxml.com/JacksonHowToCustomSerializers

здесь

http://jackson.codehaus.org/1.1.2/javadoc/org/codehaus/jackson/map/util/StdDateFormat.html

Используя способ @JsonSerialize(using= ... ):

public class JsonStdDateSerializer
extends JsonSerializer<Date> {
  private static final DateFormat iso8601Format =
    StdDateFormat.getBlueprintISO8601Format();

  @Override
  public void serialize(
    Date date, JsonGenerator jgen, SerializerProvider provider)
  throws IOException, JsonProcessingException {

    // clone because DateFormat is not thread-safe
    DateFormat myformat = (DateFormat) iso8601Format.clone();
    String formattedDate = myformat.format(date);
    jgen.writeString(formattedDate);
  }
}
person Blessed Geek    schedule 27.06.2012
comment
Кто-то проголосовал за этот ответ. Потрудитесь объяснить, почему? Мне самому не очень нравится ответ, но это рекомендуемый способ обойти его. Вы не можете винить меня или мой ответ в разногласиях между jaxb и jackson. Вам придется излить свою тираду на эти две организации. - person Blessed Geek; 08.02.2013

Это также контролируется функцией ObjectMapper (по крайней мере, в 1.9.11 и, возможно, ранее):

ObjectMapper om = new ObjectMapper();
om.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
om.writer().writeValue(System.out, objectWithDateProperty);

Я не понимаю, как декларативно сделать эквивалент самого определения объекта.

person Ross Judson    schedule 01.05.2013