2016-05-26 4 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. Я также попытался пояснить класс «Email» следующим образом:

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

Это не помогло. Я не хотел бы комментировать каждый получатель, который «@JsonProperty» или так, мне бы очень хотелось отключить это исключение, используя конфигурационный класс.

вот моя зависимость:

<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, вы можете использовать JAX-RS способ настройки ObjectMapper Джексона:

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 AWESOME – ACV

Смежные вопросы