[REST] Deserialisierung eines Object-Feldes

Herr-Herner

Mitglied
Hallo,
Leider gelingt es mir nicht mit Jersey ein Objekt-Feld zu deserialisieren, das bswp. einen String enthält. Hat jemand eine Ahnung, was ich tun kann, um das Problem zu lösen.

Hier mein Code:
Java:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ReturnValue{    
	
    private Object data;
    
    public ReturnValue() { }
    
    public ReturnValue(Object data) {
    	this.data = data;
    }
    
	public Object getData() {
		return data;
	}

	@Override
	public String toString() {
		return "ReturnValue [data=" + data + "]";
	}
    
}

Java:
public class MyClient {
	
	private String location = "http://localhost:9998/test";
	private Client client;
	private WebResource resource;
	
	public MyClient() {
		init();
	}
	
	private void init() {
	    ClientConfig clientConfig = new DefaultClientConfig();
	    clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
	    client = Client.create(clientConfig);
	    resource = client.resource(location);
	}
	
	private void test() {
        ClientResponse response = resource.accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
        ReturnValue value = response.getEntity(ReturnValue.class);
        System.out.println(value);
	}
	
	public static void main(String[] args) {
		MyClient client = new MyClient();
		client.test();
	}
	
}

Java:
@Singleton
@Path("/test")
public class Test {
	
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	public Object get() {
		return Response.ok(new ReturnValue("TEST_SERVER")).build();
	}

}

Das seralisierte Objekt sieht wie folgt aus:
Code:
{"data":{"@type":"xs:string","$":"TEST_SERVER"}}

Als Ausgabe erhalte ich:
Code:
ReturnValue [data={@type=xs:string, $=TEST_SERVER}]

Anscheinend wird der String nicht deseralisiert, sondern einfach als Wert in die Variable
Code:
data
geschrieben. Was kann ich hier tun?
 

Herr-Herner

Mitglied
Leider ist der Anwendungsfall so... Innerhalb des
Code:
data
-Feldes müssen Objekte unterschiedlichen Types gehalten werden. Ich kann ledlich voraussetzen, dass es Integers, Strings, usw. oder aber mittels JAXB-serialisierbare Objekte sind.
 

schlingel

Gesperrter Benutzer
Wenn data immer ein String ist, könntest du ja auch ein String-Property serialisieren anstatt dich hier mit den Einstellungen des Serializers zu plagen:

Java:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ReturnValue{    
    
    private String data;
    
    public ReturnValue() { }
    
    public ReturnValue(String data) {
        this.data = data;
    }

    public Object getData() {
        return data;
    }
 
    @Override
    public String toString() {
        return "ReturnValue [data=" + data + "]";
    }
    
}
 

Herr-Herner

Mitglied
Das geht - wie gesagt - leider nicht... Die Klasse ist ein generischer Daten-Container, der in der Lage sein muss, Objekte unterschiedlichen Typs aufzunehmen.
 

schlingel

Gesperrter Benutzer
Dann muss auch die Deserialisierung generisch passieren.

Da wirst du etwas eingreifen müssen, die Typ-Information aus dem String herauslesen müssen und dann die entsprechende Deserialiserung anwenden.
 

Herr-Herner

Mitglied
Das wollte ich eigentlich umgehen... Interessant ist, dass wenn man anstelle von JSON auf beiden Seiten XML verwendet, funktioniert alles perfekt. Auch wenn ich die Klasse
Code:
ReturnValue
zu einer generischen Klasse mache, funktioniert es mit JSON nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
sascha-sphw Statuscode REST Response DELETE SOA 2
B Authentication & Authorization REST API SOA 43
B REST - es gibt eine REST API, wie mache ich nun in JAVA weiter? SOA 8
mrBrown Rest - Bilder mit Metadaten modellieren SOA 24
OnDemand REST Client Aufbau SOA 7
D POST-Request mit Chrome Rest Client wirft Fehler : HTTP Status 415 - Cannot consume content type SOA 3
Shams Was ist ein "Deployment" bei Rest? SOA 1
M HTTP 400 Feher bei REST Web Service durch POST per FormParam SOA 3
M Kann man das Protokoll eines REST (Jersey) bzw. SOAP Web Services manipulieren? SOA 5
P REST POST -> return SOA 4
G WebServices REST SOA 5
G Rest und Sicherheit SOA 3
J Berechtigungen bei REST SOA 2
G Rest - Session Handling SOA 3
J REST mit java client und php server SOA 22
C REST Webservices, XML Ausgabe und Objektübertragung SOA 2
F REST Service mit Netbeans und MySQL Datenbank SOA 1
D Sicherheit bei REST-Webservice SOA 19
M Sicherer REST-Service SOA 2
K Vortrag über REST SOA 5
T Hat AXIS2 noch Zukunft und wie REST implementieren? SOA 6
T Rest Webservice der 2 verschiedene XML Objekte(JaxB) entgegennimmt SOA 10
M Fehler beim Veröffentlichen eines Webservice SOA 6
R Abwärtskompatibilität eines WebServices SOA 14
A Probleme mit der Erstellung eines *.aar Archivs SOA 3

Ähnliche Java Themen

Neue Themen


Oben