2016-05-26 27 views
-1

当我尝试使用的RESTEasy我得到下面的异常检索数据:的RESTEasy与杰克逊导致序列化JsonMappingException

造成的:org.codehaus.jackson.map.JsonMappingException:发现 类没有 串行组织.hibernate.proxy.pojo.javassist.JavassistLazyInitializer和无 性质发现创建BeanSerializer(以避免异常, 禁用SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS))(通过参考 链: les.core.modules.profile.Profile [”电子邮件“] - > org.hibernate.collection.internal.PersistentSet [0] - > mappi ng.social.employee.email.Email [ “状态”] - > mapping.system.enums.DataState _ $$ _ javassist_172 [ “处理程序”])

我看着在互联网上发现,这是因为杰克逊试图序列化尚未加载的数据。我发现某处有可能使用这样的配置杰克逊禁用例外:

import com.fasterxml.jackson.databind.ObjectMapper; 
import com.fasterxml.jackson.databind.SerializationFeature; 
import org.codehaus.jackson.jaxrs.JacksonJsonProvider; 

public class JacksonConfig extends JacksonJsonProvider { 
    public JacksonConfig() { 
     ObjectMapper mapper = new ObjectMapper(); 
     mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); 
//  setMapper(mapper); 
    } 
} 

但我不知道如何使它工作,我的意思是,应该如何方法setMapper是什么样子?我不使用Spring。我也尝试用以下注解'电子邮件'类

@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) 

它没有帮助。我不想批注'@JsonProperty'左右的每个getter,我真的想要使用config类来禁用这个异常。

这里是我的依赖关系:

<dependencies> 
     <dependency> 
      <groupId>org.jboss.resteasy</groupId> 
      <artifactId>resteasy-jaxrs</artifactId> 
      <version>3.0.4.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.resteasy</groupId> 
      <artifactId>resteasy-jackson-provider</artifactId> 
      <version>3.0.4.Final</version> 
     </dependency> 
</dependencies> 
+0

你为什么不选择正确的答案 – ACV

回答

1

由于的RESTEasy是个JAX-RS的实现,您可以使用自定义杰克逊的ObjectMapper的JAX-RS方式:

import javax.ws.rs.ext.ContextResolver; 
import javax.ws.rs.ext.Provider; 

import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.databind.ObjectMapper; 
import com.fasterxml.jackson.databind.SerializationFeature; 

/** 
* ContextResolver that automatically configures and provides {@link ObjectMapper} used by Jackson. 
*/ 
@Provider 
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> { 

    private final ObjectMapper objectMapper = new ObjectMapper() 
      .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); 

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

这是F * ING真棒 – ACV