Пост-сериализация Джексона - PullRequest
0 голосов
/ 27 сентября 2018

Я сериализую несколько списков в одном и том же объекте и хотел бы вызвать clear() для всего списка после сериализации объекта.

Текущий подход - вызывать clear () вручную для каждого списка послеСериализация, но я надеюсь, что есть более надежный подход, такой как использование пользовательского JsonSerializer или, возможно, AtomicReference.

. У меня мало опыта с JsonSerializer, и я надеюсь, что кто-то может привести пример, которыйвыполняет это.

public class ResetSerializer extends JsonSerializer<Collection> {

    @Override
    public void serialize(Collection t, JsonGenerator jg, SerializerProvider sp) throws IOException {
        if (t != null) {
            String jsonList = ???; // how do I generate the JSON output of this list with a custom serializer?
            t.clear();
            return jsonList;
       }
    }

}

1 Ответ

0 голосов
/ 27 сентября 2018

Примерно так:

public class ResetSerializer extends JsonSerializer<Collection> {

    @Override
    public void serialize(Collection t, JsonGenerator jg, SerializerProvider sp) throws IOException {
        if (t != null) {

            jg.writeStartArray();
            for (Object o: t) {
               jg.writeObject(o);
            }
            jg.writeEndArray();
            t.clear();
       }
    }
}

Обратите внимание, что этот метод имеет void тип возвращаемого значения, т.е. он не должен возвращать что-либо.Он применяет побочные эффекты, которые записаны в сериализованной версии объекта.

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