2015-10-02 6 views
39

Frühling Version 4.2.0, Hibernate 4.1.4 Hier verwenden ist meine Controller Funktion:Wie JSON-Daten aus Feder-Controller zurückzukehren @ResponseBody

@RequestMapping(value = "/mobile/getcomp", method = RequestMethod.GET) 
@ResponseBody 
public List<Company> listforCompanies() {  
    List<Company> listOfCompanies= new ArrayList<Company>();   
    listOfCompanies = companyManager.getAllCompanies(); 
    return listOfCompanies; 
} 

Jackson JSON Mapper Abhängigkeit in Pom.xml:

<!-- Jackson JSON Mapper --> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

Erhalte die Liste in meinem ArrayList, aber bei der Rückkehr wird der folgende Fehler angezeigt:

SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/IrApp] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList] with root cause 
    java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList 
     at org.springframework.util.Assert.isTrue(Assert.java:68) 
     at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:124) 

Link zu dem Beispiel, das ich folge.

+0

können Sie Ihre Federkonfiguration PLZ? –

+0

@RafikBELDI Kumpel alles ist in Ordnung ist Frühling config nicht in der Lage, zu viel Code in Frage zu stellen, da es Beschreibung fordert. –

+6

Mein Problem war, dass alle Getters privat waren. –

Antwort

95

die unten Abhängigkeit zu Ihrem pom.xml hinzufügen:

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.5.0</version> 
</dependency> 
+6

machte meinen Tag, verbrachte nur mehr die 4 Stunden und niemand hat dies überhaupt irgendwo erwähnt. –

+3

Das Hinzufügen der Abhängigkeiten war der Schlüssel für mich! Vielen Dank! –

+2

Die Abhängigkeiten waren der Schlüssel für mich auch. Ich frage mich, warum sie sie nicht auf der Spring-Seite aufschreiben: http://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html –

8

Sie müssen auch sicher sein, dass zurück Bohne nicht leer ist (und kann von Jackson serialisiert werden). In meinem speziellen Fall habe ich versucht, eine Instanz eines Objekts ohne Getter und Setter und ohne Jackson-Annotation und mit Feldern gleich Null zurückzugeben. Ich habe folgende Nachricht:

com.fasterxml.jackson.databind.JsonMappingException: 
    No serializer found for class com.foo.bar.Baz and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)) 
+2

Dies ist mehr ein Kommentar (keine Antwort). – jogo

78

Ich war mit demselben Problem konfrontiert. Ich habe nicht @ResponseBody seit ich @RestController verwendet. Aber ich bekam immer noch Fehler, weil ich die getter/setter Methode für die Unternehmensklasse nicht gestellt habe. Also nach dem Setzen der getter/setter wurde mein Problem gelöst.

+14

Das Hinzufügen nur des Getters war ausreichend. – Pedram

+5

Dies ist die richtige Antwort. Man sollte keine weiteren Abhängigkeiten hinzufügen. – Rabiees

+0

Danke das gleiche funktionierte für mich. Aber wenig überrascht, wie das wirklich zählt. –

3

Anbetracht @Arpit Antwort, für mich ist es nur funktioniert, wenn ich zwei jackson Abhängigkeiten hinzu:

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.4.3</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.4.3</version> 
</dependency> 

und konfiguriert ist, der Ursache, web.xml <mvc:annotation-driven/>.

Original-Antwort, die mir geholfen, ist hier: https://stackoverflow.com/a/33896080/3014866

3

Als ich dieses Problem konfrontiert war, habe ich einfach gesagt nur Setter-Methoden Getter und waren meine Probleme gelöst.

Ich benutze Spring Boot Version 2.0.

+0

Hinzufügen Getter & Setter wird jetzt das Problem in diesem Fall beheben – CodeIsLife

0

In meinem Fall war ich mit jackson-databind-2.8.8.jar, die nicht kompatibel ist mit JDK 1.6 Ich brauche zu verwenden, so dass Frühling nicht geladen wurde dieser Konverter. Ich habe die Version heruntergestuft und es funktioniert jetzt.

Verwandte Themen