【发布时间】:2018-12-23 19:25:10
【问题描述】:
我创建了一个序列化器,它扩展了 StdSerializer 以将对象列表转换为 json 中的许多对象。
来自
List<MyParentObject> myList = new LinkedList();
public class MyParentObject{ private String nameOfObject; }
到
{
"_elementNames":['object1','object2'],
"object1":{...},
"object2":{...}
}
感谢我的序列化程序,它可以正常工作。
public class CustomElementListSerializer extends StdSerializer<List<AbstractElement>> {
@Override
public void serialize(List<AbstractElement> elements, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
List<String> eltNames = new LinkedList<>();
System.err.println( serializerProvider.getActiveView());
jsonGenerator.writeNull();
for (AbstractElement element : elements) {
String nameProperty = Element.getElement().getElementId();
eltNames.add(nameProperty);
jsonGenerator.writeFieldName(nameProperty);
jsonGenerator.writeObject(element);
}
jsonGenerator.writeFieldName("_elementNames");
jsonGenerator.writeStartArray();
for (String eltName : eltNames) {
jsonGenerator.writeString(eltName);
}
jsonGenerator.writeEndArray();
}
}
但我不能同时使用@JsonView。 Jackson 没有考虑元素内部的注释,serializerProvider.getActiveView() 在一次递归调用后丢失了信息。
如何解决我的问题。也许 StdSerializer 不是好的解决方案。或者我想念如何使用该方法考虑 StdSerializer 中的 JsonView
jsonGenerator.writeObject(element);
【问题讨论】:
标签: java json jackson jsonserializer json-view