Wie man JSON-Ausgabe mit Jersey 1.6 mit JAXB erzeugt
@XmlRootElement
public class Todo {
private String s = "test";
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
}
und service:
@Path("/test")
public class Service {
@GET
@Produces({MediaType.APPLICATION_JSON })
public List<Todo> getAllGadgets() {
return Arrays.asList(new Todo[] { new Todo() });
}
}
meine web.xml:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
All diese Arbeit, wenn ich MediaType.APPLICATION_XML für Produziert annotation. Aber für JSON bekomme ich die folgende exception:
SCHWERER: Abgebildet Ausnahme Antwort:
500 (Internal Server Error)
javax.ws.rs.WebApplicationException:
com.Sonne.jersey.api.MessageException:
message-body-writer für die Java-Klasse
java.util.Arrays$ArrayList und Java
geben Sie java.util.Liste
und MIME media-type application/json
wurde nicht gefunden
Verwende ich Jersey-1.6 und, nach dem tutorial, das JSON-format sollte die Arbeit mit JAXB ohne zusätzliche Programmierung. Was ist falsch?
InformationsquelleAutor der Frage Mikhail | 2011-05-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich das Problem gelöst. Alles was ich tun musste, war zu fügen jersey-json-1.6.jar Bibliothek zum Projekt (dies ist nicht erforderlich Teil von jersey)
InformationsquelleAutor der Antwort Mikhail
Fügen Sie die folgenden Parameter, um das jersey-servlet in web.xml Datei, dies ist erforderlich für die neuesten 1.x-Versionen jersey-servlet.
InformationsquelleAutor der Antwort Kamran
Ich die Google App Engine verwenden und haben gekämpft, viel mit auch wenn Sie jersey-bundle-1.17.jar die meisten Sachen funktionieren, bis Sie hinzufügen
erhalten Sie eine Menge von seltsamen Nachrichten. Dies ist, weil Sie verpassen einige jackson-Gläser.
Wenn Sie gehen, um jersey-homepage und laden Sie die zip-und die bundle. Legen Sie einfach das bundle und aus dem zip müssen Sie die 4 jackson jars in den classpath und Sie sollten alles funktioniert ohne Fehler.
Hinzufügen jackson-jaxrs-1.9.2.jar beheben dieses Fehlers unter
Hinzufügen jackson-xc-1.9.2.jar lösen Sie dieses warrning unten
Ich hoffe das hilft jemandem.
InformationsquelleAutor der Antwort user1938660
Die anderen Antworten für mich nicht funktioniert, aber ich habe es endlich auf die Arbeit mit JSON.
War ich mit dem jersey-bundle-1.17.jar (habe auch versucht mit der asm-3.1.jar und jersey-json-1.17.jar Hinzugefügt classpath und funktioniert immer noch nicht). Ich habe schließlich versucht, den Download der zip beinhaltet 12 verschiedene Gläser. Nachdem ich alle 12 Gläser für meine classpath habe ich endlich loszuwerden, die Fehler und die großen Werke der Rückkehr JSON.
Ich hoffe das hilft jemandem.
Update:
Hier ist ein link zu der zip-Datei, enthält die 12 jar-Dateien: jersey-archive-1.17.zip
Ein weiteres Update für Maven Nutzer:
Fügen Sie den folgenden, um Ihre pom.xml um die 12 Gläser individuell:
InformationsquelleAutor der Antwort 11101101b
Den message-body-writer Ausnahme aufgelistet, die durch die OP ausgelöst wird, wenn Sie nicht beschriften Sie Ihre POJO (oder base POJO) mit
@XmlRootElement
.Beispiel:
InformationsquelleAutor der Antwort Steven Wolfe
Kamran ' s Antwort war für mich, einfach zu erweitern, mehr über das xml:
InformationsquelleAutor der Antwort Sultan