Java 如何在StdSerializer中使用JsonView

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,

我创建了一个序列化程序,它扩展了StdSerializer,将一个对象列表转换为json中的许多对象

多亏了我的序列化程序,它才能正常工作

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);