java - Jackson 序列化后功能

标签 java serialization jackson

我正在序列化同一个对象中的多个列表,并希望在对象序列化后对所有列表调用 clear()

当前的方法是在序列化后在每个列表上手动调用clear(),但我希望有一种更强大的方法,例如使用自定义的JsonSerializerAtomicReference.

我对 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;
       }
    }

}

最佳答案

类似于以下内容:

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 返回类型,即它不会返回任何内容。它应用在对象的序列化版本中编写的副作用。

关于java - Jackson 序列化后功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52543299/

相关文章:

java - 二叉搜索树 (BST) 中的多线程插入

java - 如何在 Serialized 实现中序列化绝对最小量的数据?

javascript - 如何反序列化未知派生类的JavaScript对象

java - 如何使用动态键名生成对象类型的 JSON 模式?

java - Jersey 2.26 REST API - Json 返回不起作用

java - 在 hql 中将结果集从 int 转换为 boolean

java - 无法在 JUnit Mockito 中实现 stub

java - 将两个数组列表合二为一

scala - 如何存储纯scala代码

java - 如何使用 JAXB 使用 Jersey 1.6 生成 JSON 输出