Zurück JSONArray statt JSONObject, Jersey, JAX-RS
Ich bin mit Jersey zu machen, einige meiner Dienstleistungen Erholsam.
Mein REST-service-Aufruf gibt mir
{"param1":"value1", "param2":"value2",...."paramN":"valueN"}
Aber, ich will es zurück
["param1":"value1", "param2":"value2",...."paramN":"valueN"]
Was sind die änderungen, die ich vornehmen muss im code unten?
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<com.abc.def.rest.model.SimplePojo> getSomeList() {
/*
Do something
*/
return listOfPojos;
}
Teil meiner web.xml - Datei sieht wie folgt aus
<servlet>
<servlet-name>Abc 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.abc.def.rest</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
Dank!
- Was Sie zurückgeben wollen, ist kein gültiges JSON. Meinst du:
["value1", "value2", ..."valueN"]
? - Ja, so etwas wie
[{"description1":"value1","name1":"name_"},{"description2":"value2","name2":"name_"},....]
aber ich immer am Ende immer{"nameOfTheEntity":[{"description1":"value1","name1":"name_"},{"description2":"value2","name2":"name_"},....]}
- Ist SimplePojo eine JAXB annotierte pojo? Richten Sie eine JSONJAXBContext in eine @Provider irgendwo?
- Könnten Sie bitte lassen Sie mich wissen, wie man meine SimplePojo JAXB annotierte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Definieren Sie Ihre service-Methode wie folgt, mit Person POJO:
Auf die POJO-Klasse:
Die Ergebnisse werden wie folgt Aussehen:
MessageBodyWriter
Klasse von Jersey zu tun.Rückkehr der Einträge im array-Typ-Stil, erstellen Sie Ihre Einheit von der array.
Versuchen Sie Folgendes:
wenn Sie Gesicht einige Probleme nach Rückgabetyp
toArray()
- Methode - könnte man explizit casten array:UPD: versuchen Sie zu konvertieren Sie Ihre Liste, um JSONArray:
dann:
return Response.ok(listOfPojos.toArray()).build();
bekomme ich die FehlermeldungSEVERE: A message body writer for Java class [Ljava.lang.Object;, and Java type class [Ljava.lang.Object;, and MIME media type application/json was not found
jersey-json
zu Ihrem classpathResponse.ok((com.abc.def.rest.model.SimplePojo[])yourListInstance.toArray()) .build();
bekomme ichcom.sun.jersey.spi.container.ContainerResponse mapMappableContainerException java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lcom.abc.def.rest.model.SimplePojo;
SEVERE: A message body writer for Java class org.json.JSONArray, and Java type class org.json.JSONArray, and MIME media type application/json was not found
für die oben angegebenen Veränderungen.jersey-json
lib in den classpath.jersey-json.jar
sind verfügbar in meinem classpath.