2016-05-26 11 views
-1

Wenn ich versuche, Daten abzurufen, indem ich Resteasy die folgende Ausnahme erhalten:Resteasy mit jackson verursacht Serialisierung JsonMappingException

Verursacht durch: org.codehaus.jackson.map.JsonMappingException: Keine Serializer für die Klasse gefunden org .hibernate.proxy.pojo.javassist.JavassistLazyInitializer und keine Eigenschaften entdeckt BeanSerializer zu erstellen (Ausnahme, deaktivieren SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS zu vermeiden)) (durch Referenzkette: les.core.modules.profile.Profile [“ E-Mails "] -> org.hibernate.collection.internal.PersistentSet [0] -> mappi ng.social.employee.email.Email [ "state"] -> mapping.system.enums.DataState _ $$ _ javassist_172 [ "handler"])

ich im Internet geschaut und fand heraus, dass liegt daran, der Jackson versucht Daten zu serialisieren, die (noch) nicht geladen sind. Ich fand irgendwo eine Möglichkeit, die Ausnahme unter Verwendung eines solchen jackson Config zu deaktivieren:

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

Aber ich weiß nicht, wie es funktioniert, ich meine, wie soll das Verfahren setMapper aussehen? Ich benutze nicht Frühling. Ich habe auch versucht, die "Email" -Klasse mit folgenden

annotieren. Es hat nicht geholfen. Ich möchte nicht jeden Getter mit "@JsonProperty" annotieren, oder so, ich möchte diese Ausnahme mit einer Config-Klasse wirklich deaktivieren.

hier sind meine Abhängigkeiten:

<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

warum Sie nicht wählen die richtige Antwort – ACV

Antwort

1

Seit Resteasy eine JAX-RS-Implementierung ist, können Sie die JAX-RS Art und Weise der Anpassung Jacksons ObjectMapper verwenden:

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

Das ist F * ING AWESOME – ACV

Verwandte Themen