У меня есть следующий вид структуры (упрощенной, чтобы, надеюсь, прояснить проблему):
interface Settings {
...
}
interface Component {
...
}
class Container {
Class<? extends Component> component;
Settings settings;
}
@SettingsClass(MySettings.class)
class MyComponent implements Component{
...
}
class MySettings implements Settings{
...
}
Если я сериализую экземпляр Container
, используя Джексона, я получаю JSON, который выглядит немного как:
{
component: "my.package.MyComponent"
settings: { ... }
}
Это именно то, что я хочу.
Но я не могу десериализовать этот JSON, потому что Джексон не знает, какую реализацию настроек использовать.Во время выполнения я могу получить аннотацию SettingsClass и определить, к какому классу следует десериализовать поле settings
.
Есть ли способ заставить Джексона частично десериализовать JSON, а затем выполнить его десериализациюостальные (то есть settings
), как только я смог осмотреть component
и определить, какой класс Settings
использовать?