Я пытаюсь создать способ сериализации и десериализации объектов в JSON с использованием Джексона без необходимости полагаться на аннотации, дополнения или любой код, специфичный для объекта (т. Е. Специальные десериализаторы). Однако у меня возникли проблемы с десериализацией интерфейсов.
У меня была идея сохранить имя класса объекта в JSON. Например, если у меня есть следующие классы:
MyClassOne.java
package test.classes;
public class MyClassOne{
private String myString;
private MyClass myReference;
public MyClassOne(String myString, MyClass myReference) {
this.myString = myString;
this.myReference = myReference;
}
public String getMyString() {
return myString;
}
public MyClass getMyReference() {
return myReference;
}
}
MyClassTwo.java
package test.classes;
public class MyClassTwo implements MyClass{
private int myInt;
public MyClassTwo(int myInt) {
this.myInt = myInt;
}
public int getMyInt() {
return myInt;
}
}
Я бы хотел использовать Джексона для сериализации MyObjectOne
экземпляров в нечто похожее на:
{
"_class":"test.classes.MyClassOne" ,
"myString":"Hello World",
"myReference":{
"_class":"test.classes.MyClassTwo",
"myInt":2
}
}
Мне было интересно, может ли это сработать и как этого добиться с Джексоном.