Com.fasterxml.jackson.databind.exc.invalidtypidexception: konnte Typ id '[' als Subtyp nicht auflösenJava

Java-Forum
Anonymous
 Com.fasterxml.jackson.databind.exc.invalidtypidexception: konnte Typ id '[' als Subtyp nicht auflösen

Post by Anonymous »

Ich habe eine abstrakte Klasse namens Fruit und ich habe die @JsonTypeinfo und @JsonSuBypes wie folgt darauf eingestellt:

Code: Select all

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "fruits")
@JsonSubTypes({
@Type(value = Apple.class, name = "sandbox.Apple"),
@Type(value = FruitGroup.class, name = "sandbox.FruitGroup")
})
public abstract class Fruit {

public abstract String getName();

@Override
public String toString() {
return "Fruit [getName()=" + getName() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]";
}
}
< /code>
Und meine abgeleitete Klasse sieht so aus < /p>
@JsonTypeName("sandbox.Apple")
public class Apple extends Fruit {

private String _name;

public void setName(String name) {
_name = name;
}

@Override
public String getName() {
return _name;
}
< /code>
====== [Aktualisiert] =======
Ich habe auch Klassenfruchtgruppe, die Obst erweitert und eine Array von Obst enthält. < /p>
@JsonTypeName("sandbox.FruitGroup")
public class FruitGroup extends Fruit {
private Fruit[] _Fruit;
private String _name;
private String _category;

public Fruit[] getFruit() {
return _Fruit;
}

public void setFruits(Fruit[] fruits) {
_Fruit = fruits;
}

public void setName(String name) {
_name = name;
}

@Override
public String getName() {
return _name;
}

public void setCategory(String category) {
_category = category;
}

public String getCategory() {
return _category;
}
< /code>
} < /p>
Als ich versuchte, den JsonText in Obstobjekt zu deserialisieren, fand ich die folgende Ausnahme: < /p>
Exception in thread "main" com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id '[' as a subtype of `sandbox.FruitGroup`: known type ids = [FruitGroup, sandbox.Apple] at [Source: (String)"{"fruits":[["sandbox.Apple",{"name": "Apple"}]],"name": "Fruit Group"}"; line: 1, column: 11]
at com.fasterxml.jackson.databind.exc.InvalidTypeIdException.from(InvalidTypeIdException.java:43)
< /code>
Der JsonText [aktualisiert] wurde tatsächlich von Jackson Version 2.10.2 generiert, und ich habe früher keine JSON -Anmerkungen für meine Klassen eingestellt. Nachdem ich die Jackson -Version auf 2.11.0 aktualisiert habe, aktualisiere ich auch meine abstrakte Klasse, um die JSON -Anmerkungen hineinzugeben. Dann habe ich versucht, es mit Jackson Version 2.11.0 zu deserialisieren, aber stattdessen habe ich einen Fehler bekommen. Könnten ihr mir helfen, dieses [url=viewtopic.php?t=20324]Problem[/url] zu lösen?
Hier ist mein jsonText < /p>
{
"fruit": [
[
"sandbox.Apple",
{
"name": "Apple1"
}
]
],
"name": "Group of apples",
"category": "Sweet fruit"
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post