0

Я новичок в мире 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 помочь в том, где я иду не так.

ответ

0

Ну, нет ничего плохого в коде. У меня были некоторые данные в таблице User перед добавлением аннотаций. Пришлось удалить все данные, а затем попробовать. Работал!!!