Я использую библиотеку Джексона для записи пользовательских сериализаторов и регистрирую их внутри пользовательского ObjectMapper. Однако я также хочу изменить сериализацию по умолчанию, чтобы просто выводить строковое представление объекта, когда более конкретная пользовательская сериализация не была записана.Изменение поведения сериализации по умолчанию в Jackson
Например, я написал собственные сериализаторы для классов «Карта» и «Ввод» в дополнение к сериализатору по умолчанию. Затем модуль сериализации в моем пользовательском ObjectMapper может выглядеть следующим образом:
SimpleModule module = new SimpleModule("module", new Version(0, 1, 0, "alpha", null, null));
module.addSerializer(Entry.class, new EntryJsonSerializer());
module.addSerializer(Map.class, new MapJsonSerializer());
module.addSerializer(Object.class, new DefaultJsonSerializer());
this.registerModule(module);
Однако я нахожу, что модуль будет использовать DefaultJsonSerializer сериализовать Карта и вступление объектов (поскольку они также объект объектов).
Как изменить поведение сериализации по умолчанию, в то время как объекты Entry и Map сериализуются по назначению?
спасибо за ответ. Принудительное статическое типирование не изменило результат. Я не уверен, что вы подразумеваете под «регистраторами сериализаторов для типов значений», пример был бы полезен. – dug
Я имею в виду, что вы не можете указать «использовать это для любого java.lang.Object», который будет использоваться для всего - вам нужно сделать «addSerializer» для фактических типов, которые вы хотите переопределить. Или, если вы не заботитесь о каких-либо стандартизированных сериализаторах, предлагаемых Jackson, вы можете просто обрабатывать жесткий код (согласно вашему ответу). – StaxMan