Jackson ObjectMapper kann POJO nicht deserialisieren, löst eine Ausnahme aus: Kein passender Konstruktor für Typ [...] gefunden: Kann nicht vom JSON-Objekt instanziiert werden
Habe ich versucht den folgenden code testen, ohne Erfolg:
class TestClass
{
private class ND2Customer
{
public String name;
public String description;
public String email;
public Boolean multiuser;
public String dnszone;
public String uri;
public String type;
public ND2Customer()
{
}
}
@Test
public void TestJackson() throws JsonParseException, JsonMappingException, IOException
{
String json="{\"description\": \"test1u\", \"dnszone\": \"test1.public.sevenltest.example.com.\", \"uri\": \"http://199.127.129.69/customer/test1\", \"multiuser\": true, \"type\": \"2.0.3-3146\", \"email\": \"[email protected]\", \"name\": \"test1\"}";
ObjectMapper mapper = new ObjectMapper();
ND2Customer casted=mapper.readValue(json, ND2Customer.class);
String castedback=mapper.defaultPrettyPrintingWriter().writeValueAsString(casted);
System.out.println(castedback);
}
}
Dieses problem unterscheidet sich von diesen:
Deserialisierung von JSON mit Jackson - Warum JsonMappingException "Kein passender Konstruktor"?
- und dieses eine:
JsonMappingException: Kein passender Konstruktor gefunden, geben Sie [einfache Art, Klasse ]: kann nicht instanziiert, die aus JSON-Objekt
- und dieses eine:
JsonMappingException: Kein passender Konstruktor gefunden, geben Sie [einfache Art, Klasse ]: kann nicht instanziiert, die aus JSON-Objekt
als ich manuell überschreiben des default-Konstruktor, und nicht eine Unterklasse.
Wie behebe ich dieses problem?
InformationsquelleAutor der Frage tribbloid | 2012-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen es statisch. Jackson kann nicht deserialisiert werden, um innere Klassen
InformationsquelleAutor der Antwort eugen
Das problem ist wahrscheinlich, dass Jackson nicht richtig erreichen Ihre
ND2Customer
Klasse aufrufen des Konstruktors, weil esprivate
da die Klasse sonst sieht das einfach nur gut. Versuchen Sie, espublic
und sehen, ob das funktioniert.InformationsquelleAutor der Antwort Donal Fellows