FasterXML / FasterXML/jackson-databind
Polymorphic serialization: use property name directly as type info, without wrapper
- Vorherrschende Sprache
- Java
- Sterne
- 3.7k
- Forks
- 1.5k
- Ø Merge
- 3 T. 6 Std.
- Gemergte PRs (30 T.)
- 28
Beschreibung
Given:
public class Zoo {
private Animal animal;
}
public abstract class Animal {
private String name = "Benji";
}
public class Dog extends Animal {
}
public class Cat extends Animal {
}
I want to be able to serialize an instance of `Zoo` so that it outputs either:
{
"dog": {
"name": "Benji"
}
}
or
{
"cat": {
"name": "Benji"
}
}
depending on the concrete type of `animal` in `Zoo`.
As far as I can tell, none of the options `@JsonTypeInfo` currently support this. The closest I can get is with the default `@JsonTypeInfo.As.WRAPPER_OBJECT`, but that results in:
{
"animal":
"cat": {
"name": "Benji"
}
}
}
I really don't want to have the wrapper object. The reason is that I want to remain backwards compatible with a previous incarnation of my object model where there were only `Dog`s, the `Animal` abstraction hadn't been created, and `Animal animal` in `Zoo` was `Dog dog`.
Is it possible to add a sub-type (de)serialization option that implements this?
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Bewertung
Dieses Issue wurde noch nicht bewertet.