У меня проблема с сериализатором, вот моя проблема:
У меня есть такой класс bean:
@JsonSerialize(using = MyObjectSerializer.class)
public class MyObject {
public int a;
public boolean b;
}
При сериализации через Джексон без аннотации @ JsonSerialize я, очевидно, получаю:
{ "a": 42, "b": true}
Но мне нужно добавить свойство, чтобы оно давало:
{ "a": 42, "b": true, "version": "0.1-beta" }
(Это пример, в реальном мире добавляемое свойство зависит от нескольких свойств объекта)
Поэтому мне нужно написать собственный сериализатор. Однако в моем реальном коде класс содержит гораздо больше свойств, чем просто 2. Поэтому я не хочу вручную создавать эти свойства для объекта json ...
Если я использую это:
public static class MyObjectSerializer extends JsonSerializer<MyObject> {
@Override public void serialize(MyObject obj, JsonGenerator json, SerializerProvider provider) throws IOException, JsonProcessingException {
json.writeObject(obj);
}
}
Очевидно, я получаю StackOverflowError.
Итак, вопрос может быть таким:
- Как изнутри JsonSerializer я могу сериализовать объект без повторного вызова самого сериализатора?
or
- Как я могу динамически добавлять свойства к сериализуемому объекту.
Раньше я делал это все время с GSon, но Джексон предоставляет множество функций, которые я хотел бы использовать;)