java.lang.ClassCastException: java.util.LinkedHashMap kann nicht in com.testing.models.Account umgewandelt werden
Ich bin immer folgende Fehlermeldung:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.testing.models.Account
folgenden code
final int expectedId = 1;
Test newTest = create();
int expectedResponseCode = Response.SC_OK;
ArrayList<Account> account = given().when().expect().statusCode(expectedResponseCode)
.get("accounts/" + newTest.id() + "/users")
.as(ArrayList.class);
assertThat(account.get(0).getId()).isEqualTo(expectedId);
Gibt es einen Grund, warum ich nicht get(0)
?
InformationsquelleAutor der Frage Passionate Developer | 2015-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem kommt von Jackson. Wenn es nicht genug Informationen, auf welche Klasse zu Deserialisieren, es nutzt
LinkedHashMap
.Da bist du nicht informiert Jackson, der den Typ des Elements Ihre
ArrayList
es nicht wissen, dass Sie möchten, zu Deserialisieren in eineArrayList
vonAccount
s. So fällt es auf den Standardwert zurück.Statt, könnten Sie wahrscheinlich verwenden
as(JsonNode.class)
und befasst sich dann mit derObjectMapper
in einer reicheren Weise als rest-sicher sein können. So etwas wie dieses:InformationsquelleAutor der Antwort Mark Peters
Versuchen Sie Folgendes:
InformationsquelleAutor der Antwort user2578871
Konnte wie ich Abmilderung der JSON-Array, Sammlung von LinkedHashMap Objekte problem wurde durch die Verwendung
CollectionType
eher als eineTypeReference
.Dies ist, was ich getan habe und gearbeitet:
Mithilfe der
TypeReference
war ich noch immer eine ArrayList LinkedHashMaps, d.h. funktioniert nicht:InformationsquelleAutor der Antwort Himadri Pant
Hatte ich eine ähnliche Ausnahme (aber anderes problem) -
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to org.bson.Document
, und glücklicherweise ist es einfacher gelöst:Statt
gibt Fehler, die auf der zweiten Zeile, kann Man
InformationsquelleAutor der Antwort nurb