Konvertiert ein Objekt in JSON im REST-Service von Spring MVC

8

Ich versuche, einen REST-Service mit Spring MVC zu erstellen, und es funktioniert, wenn ich eine einfache Zeichenfolge zurückgebe. Meine Anforderung besteht darin, eine JSON-Zeichenfolge des Java-Objekts zurückzugeben. Ich weiß nicht, wie ich dies durch implizite Konvertierung erreichen kann.

Hier ist mein Code:

StudentService.java

%Vor%

Student.java

%Vor%

Hier Ссылка gibt die URL "Test REST Service !!!"

Aber Ссылка URL wirft HTTP-Statuscode 406 mit Fehlermeldung:

Die Ressource, die von dieser Anfrage identifiziert wird, kann nur Antworten mit Eigenschaften erzeugen, die nicht akzeptabel sind, entsprechend den "accept" Kopfzeilen der Anfrage.

    
Roul 16.03.2015, 11:57
quelle

3 Antworten

5

Endlich habe ich eine Lösung mit der Jackson-Bibliothek zusammen mit Spring MVC bekommen. Ich habe diese Lösung aus einem Beispiel von Journal Dev ( Ссылка )

Also, die Codeänderungen, die ich gemacht habe, sind:

  • Schließe die Bibliothek in Maven ein.
  • Fügen Sie das JSON-Konvertierungs-Servlet in servlet-context.xml hinzu.
  • Ändern Sie das Modell in Serializable.

Ich habe an meinem REST-Service-Controller keine Änderungen vorgenommen. Standardmäßig wird es in JSON konvertiert.

    
Roul 16.03.2015, 17:14
quelle
4

Sie können jederzeit @Produces("application/json") über Ihrer Webmethode hinzufügen oder produces="application/json" angeben, um json zurückzugeben. Dann können Sie, zusätzlich zur Klasse Student , @XmlRootElement von javax.xml.bind.annotation package hinzufügen.

Bitte beachten Sie, dass es möglicherweise keine gute Idee ist, Modellklassen direkt zurückzugeben. Nur ein Vorschlag.

HTH.

    
Gyan 16.03.2015 12:07
quelle
1


Die Json-Konvertierung sollte out-of-the-box funktionieren. Damit dies geschieht, müssen Sie einige einfache Konfigurationen hinzufügen:
Fügen Sie zuerst einen contentNegotiationManager in Ihre Spring-Konfigurationsdatei ein. Es ist verantwortlich für die Aushandlung des Antworttyps:

%Vor%

Fügen Sie dann Jackson2 jars (jackson-databind und jackson-core) im Klassenpfad des Dienstes hinzu. Jackson ist verantwortlich für die Datenserialisierung zu JSON. Spring erkennt diese und initialisiert den MappingJackson2HttpMessageConverter automatisch für Sie. Wenn ich nur diese Konfiguration habe, kann ich automatisch zu JSON konvertieren. Die beschriebene Konfiguration hat den zusätzlichen Vorteil, dass Sie die Möglichkeit haben, nach XML zu serialisieren, wenn Sie den accept: application / xml Header setzen.

    
Boyan 17.03.2015 12:25
quelle

Tags und Links