Derzeit bin Drucken ich die Ausgabe von meinem Podcast API wie folgt aus:Jersey: Wie drucke ich ein generisches Objekt mit geschachtelten Objekten als JSON?
{
"data":[{"feed":"someUrl","id":1,"name":"someName"}],
"success":true
}
ich das Objekt mit „Daten“ und „Erfolg“ eine Antwort Objekt haben zur Erzeugung und ich habe ein PodcastResponse Objekt für den Podcast-Objekt mit "feed", "id", "name".
@XmlRootElement()
@XmlSeeAlso(PodcastResponse.class)
public class Response {
@XmlElement
boolean success = true;
@XmlElement
List<PodcastResponse> data;
//Getters, Setters, etc.
}
@XmlRootElement()
public class PodcastResponse {
@XmlElement
int id;
@XmlElement
String name;
@XmlElement
String feed_url;
//Getters, Setters, etc.
}
Dies erzeugt den Ausgang:
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getPodcasts() {
return new Response(true, PodcastManager.getPodcasts());
}
, das funktioniert. Jetzt möchte ich die Response-Klasse generieren, so dass ich sie mit mehr als der PodcastResponse-Klasse verwenden kann.
@XmlRootElement()
public class Response<T> {
@XmlElement
boolean success = true;
@XmlElement
List<T> data;
//Getters, Setters, etc.
}
Das nicht funktioniert wie erwartet, die Ausgabe:
{
"data": ["[email protected]"],
"success":true
}
Wie kann ich eine generische Response Class schreiben, so dass ich eine varitey von Daten in das JSON-Format anzeigen kann?
Sie verwenden müssen [jaxb Anmerkungen] (https://jersey.java.net/documentation/1.19.1/xml.html) für PodcastResponse so dass, wenn das Objekt serialisiert wird Ihre Serializer weiß, wie man Generiere den JSON für jedes Feld. – randominstanceOfLivingThing