Джексон 3.1.1 Отсутствующий идентификатор типа исключения подтипа для списка полиморфического типа?JAVA

Программисты JAVA общаются здесь
Anonymous
Джексон 3.1.1 Отсутствующий идентификатор типа исключения подтипа для списка полиморфического типа?

Сообщение Anonymous »

У меня есть конкретный объект абстрактного класса, который я сделал. /> Вот классы с My Object Mapper внизу: < /p>

абстрактный класс: < /strong> < /p>

Код: Выделить всё

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "BTRFSPhysicalLocationItem")
@JsonSubTypes({
@Type(name = "Snapshot", value = Snapshot.class),
@Type(name = "Backup", value = Backup.class),
@Type(name = "Subvolume", value = Subvolume.class)})
public abstract class BTRFSPhysicalLocationItem {

private final String name;
@JsonProperty
private final Path location;

/**
* Makes a new subvolume instance with the specified location. May or may
* not actually exist.
*
* @param location The location of the subvolume
*/
@JsonCreator
protected BTRFSPhysicalLocationItem(@JsonProperty(value = "location") Path location) {
this.location = location;
this.name = location.getFileName().toString();
}
< /code>

 Concrete Class: < /strong> < /p>

public class Subvolume extends BTRFSPhysicalLocationItem {

/**
* Creates a new subvolume with the specified path.The subvolume may or may
* not exist at this point.
*
* @param location
*/
@JsonCreator
public Subvolume(@JsonProperty Path location) {
super(location);
}
< /code>

 block ObjectMapper: < /strong> < /p>

ObjectMapper MAPPER = new ObjectMapper();
List SUBVOLUME_LIST = new ArrayList();
//Subvolume is populated by other methods it's not worth showing them here
System.out.println("\n\n");
MAPPER.writeValue(System.out, SUBVOLUME_LIST);
System.out.println("\n\n\n");
var s = MAPPER.writeValueAsString(SUBVOLUME_LIST);
List list = MAPPER.readValue(s, new TypeReference() {
});
Output JSON:[/b] [{"name":"WanderingEcho","location":"file:///home/sarah/NetBeansProjects/WanderingEcho/"}]

Exception:

Aug 05, 2019 4:55:14 PM com.protonmail.sarahszabo.wanderingecho.btrfs.BTRFS
SEVERE: null
com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Missing type id when trying to resolve subtype of [simple type, class com.protonmail.sarahszabo.wanderingecho.btrfs.subvolume.Subvolume]: missing type id property 'BTRFSPhysicalLocationItem'
at [Source: (String)"[{"name":"WanderingEcho","location":"file:///home/sarah/NetBeansProjects/WanderingEcho/"}]"; line: 1, column: 89] (through reference chain: java.util.ArrayList[0])
< /code>

Другие ответы, такие как дсюреализация полиморфных типов Джексона>

Подробнее здесь: https://stackoverflow.com/questions/573 ... pe-of-list

Вернуться в «JAVA»