Java 如何在StdSerializer中使用JsonView
我创建了一个序列化程序,它扩展了StdSerializer,将一个对象列表转换为json中的许多对象 从 多亏了我的序列化程序,它才能正常工作Java 如何在StdSerializer中使用JsonView,java,json,jackson,jsonserializer,json-view,Java,Json,Jackson,Jsonserializer,Json View,我创建了一个序列化程序,它扩展了StdSerializer,将一个对象列表转换为json中的许多对象 从 多亏了我的序列化程序,它才能正常工作 public class CustomElementListSerializer extends StdSerializer<List<AbstractElement>> { @Override public void serialize(List<AbstractElement> elements,
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();
}
}
我找到了解决办法。必须使用当前serializerProvider的配置设置新的映射器
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
mapper.setConfig(serializerProvider.getConfig());
jsonGenerator.setCodec(mapper);
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();
}
}
jsonGenerator.writeObject(element);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
mapper.setConfig(serializerProvider.getConfig());
jsonGenerator.setCodec(mapper);