Ich habe die folgenden Web-Service nur lernen:Jackson Liste <Object> zu String
@GET
@Path("/tmp/uno")
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Object> getData() {
KeyValue<Integer, Integer> kv = new KeyValue<>(1, 2);
List<KeyValue> list = new ArrayList<>();
list.add(kv);
**return new ArrayList<Object>(list);**
}
ich die Besetzung nur zu Testzwecken zu tun und ich bin immer folgende Fehlermeldung:
sep 20, 2017 5:53:17 PM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo
SEVERE: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.ArrayList<java.lang.Object>.
Wenn ich werfe die Liste nicht
@GET
@Path("/tmp/uno")
@Produces(MediaType.APPLICATION_JSON)
public **List<KeyValue>** getData() {
KeyValue<Integer, Integer> kv = new KeyValue<>(1, 2);
List<KeyValue> list = new ArrayList<>();
list.add(kv);
**return list;**
}
ich die folgende Antwort erhalten:
[
{
"key": {
"type": "int",
"value": 1
},
"value": {
"type": "int",
"value": 2
}
}
]
Ich habe zwei Fragen 1.- Warum kann ich keine Liste von Objekten antworten? 2.- Warum hat jede Eigenschaft ihren Datentyp im jSON?
Die keyValue Klasse ist die folgende:
public class KeyValue<X, Y> {
private X key;
private Y value;
public KeyValue() {
// Auto-generated constructor stub
}
public KeyValue(X key, Y value) {
this.key = key;
this.value = value;
}
public X getKey() {
return key;
}
public Y getValue() {
return value;
}
public void setKey(X key) {
this.key = key;
}
public void setValue(Y value) {
this.value = value;
}
}
Meine Jackson Abhängigkeit ist:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.26</version>
</dependency>