Quiero convertir una cadena JSON en objeto java, pero la clase de este objeto contiene campos abstractos, que Jackson no puede crear instancias, y no produce el objeto. ¿Cuál es la forma más fácil de decir que de algunas implementación predeterminada de una clase abstracta, comoBiblioteca Jackson JSON: cómo crear una instancia de una clase que contiene campos abstractos
setDefault(AbstractAnimal.class, Cat.class);
o para decidir acerca de la clase de implementación basado en JSON nombre de atributo, por ejemplo. para JSON objeto:
{
...
cat: {...}
...
}
me acaba de Wite:
setImpl("cat", Cat.class);
Sé que es posible en Jackson insertar la información de clase en el interior JSON, pero yo no quiero complicar el formato JSON I utilizar. Quiero decidir qué clase que se utiliza simplemente mediante el establecimiento de clase de implementación por defecto, o por el nombre del atributo ('gato') - al igual que en la biblioteca xstream, en el que escribe:
xStream.alias("cat", Cat.class);
¿Hay una manera de hacerlo, especialmente en una línea, ¿o requiere más código?
No existe un 'campo abstracto' en Java. – EJP
lo que quise decir es: 'clase C {Animal animal; } ' y quiero crear una instancia de C, donde Aniaml es abstracto, y quiero poner en este campo un gato, que extiende Animal – Marcin
por lo que no hay problema. No existe una regla para que las variables sean de tipo abstracto. – EJP