У меня есть класс, который я хочу преобразовать в Java в класс. Один из атрибутов класса сам по себе является сериализуемым классом, который имеет один параметр примитива (String) и действительно представляет строку с псевдонимом, то есть строку с некоторыми дополнительными элементами, чтобы убедиться, что он имеет правильный формат. Это полезно в различных приложениях (например, идентификаторах), в данном случае это строка Cron, которая должна иметь конкретное представление c. Итак, у меня есть
class ScheduleConfigurations {
private Cron cron;
private Set<Cron> overrides;
// other attributes, getters/setters, constructor
}
class Cron {
private String cronString;
private void validate() { // validates string has correct representation }
// getters, setters, constructor
}
Очевидно, что стандартный десериализатор Джексона ожидает JSON в формате
{
"cron": {
"cronString": "someCronString",
"overrides": [
{ "cronString": "someCronString1" },
{ "cronString": "someCronString2" }
]
}
Однако класс Cron
явно является псевдонимом String. Я бы хотел, чтобы вышеперечисленное было сериализовано / десериализовано как
{
"cron": "someCronString",
"overrides": ["someCronString1", "someCronString2"]
}
. Я могу добиться этого с помощью специального сериализатора с кучей шаблонов, но я ищу элегантный способ сказать Джексону: «эй у этого класса есть один атрибут String, просто пропустите его и обработайте его сериализованное представление как единственный атрибут ".