2016-07-29 9 views
0

Ich lerne JERSEY REST API mit Maven. Ich bekomme folgenden Fehler Whey ich Hit GET-Anfrage. Interessanter Punkt ist, wenn ich nur spezifisches Klassenobjekt zurückgebe, bekomme ich das gewünschte Ergebnis, aber wenn ich eine Karte von allen diesen Objekten zurückgebe, bekomme ich diesen Fehler mit Status 500 - Interner Serverfehler. Bitte vorschlagen.Json Antwort schweren Fehler in Jersey REST-Anwendung

Fehler:

SEVERE: MessageBodyWriter not found for media type=application/json, 
type=class java.util.HashMap, genericType=java.util.Map<java.lang.Integer, message.Message>. 

Fehler anfällig:

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public Map<Integer,Message> getAll(){ 
    ms.sample(); 
    return ms.getAllMessages(); 

} 

gleicher Code aber bestimmtes Objekt zurückkehrt, funktioniert gut:

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public Message getAll(){ 
    ms.sample(); 
    return ms.getAllMessages().get(1); 

} 

PS: Ich habe hinzugefügt json verwandtes Element in pom.xml-Datei wie folgt

<dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-moxy</artifactId> 
    </dependency> 

Ich verwende Maven v2.16

+0

hast du eine jackson-abhängigkeit? – sidgate

Antwort

0

moxy und Map s sind keine Freunde ... Ich empfehle Ihnen Jackson anstelle von moxy zu (de) serialize JSON.

, es zu tun, entfernen Sie die jersey-media-moxy Abhängigkeit und fügen Sie den folgenden:

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-json-jackson</artifactId> 
    <version>2.23.1</version> 
</dependency> 

Weitere Einzelheiten Jersey documentation überprüfen.

+0

Danke, es hat funktioniert. Aber noch eine, warum POM.XML-Datei dann das Standard-Moxy-Element hat? – Aditya

0

Add folgende Abhängigkeit

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-json-jackson</artifactId> 

</dependency>