我正在序列化同一个对象中的多个列表,并希望在对象序列化后对所有列表调用 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;
}
}
}
最佳答案
类似于以下内容:
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/