Джексон: формат сериализации поля в зависимости от другого значения поля - PullRequest
1 голос
/ 12 февраля 2011

У меня есть следующий класс Java, и я хочу сериализовать его в JSON, используя Джексона:

public class Event
   boolean allDay;
   Date start;
   Date end;

   // get/set
}

Но я хочу отформатировать Даты как "гггг-ММ-дд", когда allDay имеет значение true и "гггг-мм-дд чч: мм "когда allDay ложно.Это возможно?

Ответы [ 2 ]

1 голос
/ 13 февраля 2011

Ответ Майка правильный, текущий сериализатор (и, вероятно, десериализатор) - очевидные пути.Я не могу придумать более конкретную поддержку для обработки случаев совместного ограничения, подобных этому.

Для десериализации вы также можете рассмотреть возможность использования @JsonCreator для конструктора (или статического метода фабрики): преимущество в том, что вы можете определить обапередаваемый логический флаг и значение String, поэтому было бы немного проще иметь пользовательскую обработку.

1 голос
/ 12 февраля 2011

Я не думаю, что есть какой-то встроенный способ сделать это, а это значит, что вам нужно написать какой-то собственный код сериализации. JsonDeserialize - это, вероятно, то место, с которого вы хотите начать.

Вам также нужно убедиться, что код, который использует JSON, знает, как работать с двумя альтернативными форматами - и это целый отдельный беспорядок. На самом деле, возможно, имеет смысл просто отправлять временные метки в неотформатированном виде (я думаю, что по умолчанию это запись в виде количества миллисекунд с начала эпохи) и обеспечение надлежащего форматирования клиентского кода перед его отображением пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...