Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何配置javajackson不在空bean上抛出NPE异常?_Java_Rest_Jackson - Fatal编程技术网

如何配置javajackson不在空bean上抛出NPE异常?

如何配置javajackson不在空bean上抛出NPE异常?,java,rest,jackson,Java,Rest,Jackson,我想看看我怎样才能说服jackson什么都不做,而不是在空豆上抛出异常。你可以看到这张照片 org.codehaus.jackson.map.JsonMappingException:未找到类java.lang.Exception的序列化程序,也未找到创建BeanSerializer的属性(以避免 异常,禁用SerializationConfig.Feature.FAIL(在\u空的\u bean上) 位于org.codehaus.jackson.map.ser.impl.UnknownSeri

我想看看我怎样才能说服jackson什么都不做,而不是在空豆上抛出异常。你可以看到这张照片

org.codehaus.jackson.map.JsonMappingException:未找到类java.lang.Exception的序列化程序,也未找到创建BeanSerializer的属性(以避免 异常,禁用SerializationConfig.Feature.FAIL(在\u空的\u bean上) 位于org.codehaus.jackson.map.ser.impl.UnknownSerializer.failforepty(UnknownSerializer.java:52) 在org.codehaus.jackson.map.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:25)上 在org.codehaus.jackson.map.ser.StdSerializerProvider.\u serializeValue(StdSerializerProvider.java:610) 位于org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
您需要关闭序列化功能
FAIL\u ON\u EMPTY\u BEANS
。您可以通过在ObjectMapper上设置以下内容来实现这一点:

import org.codehaus.jackson.map.SerializationConfig.Feature;

ObjectMapper mapper = new ObjectMapper();
mapper.disable(Feature.FAIL_ON_EMPTY_BEANS);

为了在JAX-RS中配置自定义ObjectMapper设置,您需要创建
提供程序
上下文解析器
。您可以使用其中一个或另一个。这些允许您的JAX-RS框架查找您希望它使用的ObjectMapper,而不是使用默认配置。这些将在应用程序启动时被扫描,并在框架中注册

下面是一个
提供程序的示例:

@Named
@Provider
public class MyJacksonJsonProvider extends JacksonJsonProvider
{
    @Override
    public void writeTo(Object value, Class<?> type, Type genericType, Annotation[] annotations, 
            MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) 
            throws IOException 
    {
        ObjectMapper mapper = locateMapper(type, mediaType);

        mapper.disable(Feature.FAIL_ON_EMPTY_BEANS);

        super.writeTo(value, type, genericType, annotations, mediaType, httpHeaders, entityStream);
    }
}
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class ObjectMapperResolver implements ContextResolver<ObjectMapper> 
{
    private final ObjectMapper mapper;

    public ObjectMapperResolver() 
    {
        mapper = new ObjectMapper();
        mapper.disable(Feature.FAIL_ON_EMPTY_BEANS);
    }

    @Override
    public ObjectMapper getContext(Class<?> type) 
    {
        return mapper;
    }
}

谢谢,我正在查。
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class ObjectMapperResolver implements ContextResolver<ObjectMapper> 
{
    private final ObjectMapper mapper;

    public ObjectMapperResolver() 
    {
        mapper = new ObjectMapper();
        mapper.disable(Feature.FAIL_ON_EMPTY_BEANS);
    }

    @Override
    public ObjectMapper getContext(Class<?> type) 
    {
        return mapper;
    }
}