Я новичок в мире json. Я упомянул несколько вопросов, которые заданы в stackoverflow по этому вопросу. Я пробовал, как сказал в http://wiki.fasterxml.com/JacksonPolymorphicDeserialization, но не работал. Я использую mongoDB.Как сериализовать и десериализовать объекты абстрактного класса или интерфейса в java?
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property= "type")
@JsonSubTypes({@Type(value = UserImpl.class, name = "userData")})
public abstract class User {
public abstract long getId();
public abstract void setId(long id);
public abstract String getFirstName();
public abstract void setFirstName(String firstName);
}
@JsonTypeName("userData")
public class UserImpl extends User {
@Id
private long id;
private String firstName;
// Constructor
//Getter and setter
}
Я добавил ниже зависимость:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.5</version>
</dependency>
Я просто пытаюсь добавить данные в таблицу пользователей. Я получаю
org.springframework.data.mapping.model.MappingInstantiationException: Failed to instantiate com.example.model.User using constructor public com.example.model.User() with arguments
at org.springframework.data.convert.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:78)
at org.springframework.data.convert.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:83)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:251)
....
PLease помочь в том, где я иду не так.