FasterXML / FasterXML/jackson-databind
Deduction deserialization - add support for pojo-hierarchies such that the absence of child fields infers a supertype
- 主要言語
- Java
- スター
- 3.7k
- フォーク
- 1.5k
- 平均マージ
- 3日 6時間
- マージ済み PR(30日)
- 28
説明
Currently, deduction deserialization requires all values to have unique field. Because of that, there is no way to deserialize values to superclass and subclasses, when `defaultImpl` is different than superclass.
Example:
For json:
```{
"name": "Italy",
"places": {
"mountains": {
"name": "The Alps"
},
"cites": [
{
"name": "Rome",
"places": {
"colosseum": {
"name": "The Colosseum"
},
"romanForum": {
"name": "The Roman Forum"
}
}
},
{
"name": "Venice",
"places": {
"bridges": []
}
}
]
}
}
```
and pojo-hierarchy:
```
public static class Place implements WorthSeeing {
public String name;
}
public static class CompositePlace extends Place implements WorthSeeing {
public Map places;
}
static class ListOfPlaces extends ArrayList implements WorthSeeing {
}
```
and deduction deserialization with `defaultImpl` differ then supertype:
```
@JsonTypeInfo(use = DEDUCTION, defaultImpl = ListOfPlaces.class)
@JsonSubTypes( {@Type(ListOfPlaces.class), @Type(CompositePlace.class), @Type(Place.class)})
interface WorthSeeing {}
```
the `MismatchedInputException` is thrown, because the values with only `name` fields are not classified to `Place` .
Desired behaviour:
- value contains only fields from superclass -> it's mapped to an object of superclass
- value contains fields from superclass and a subclass -> it's mapped to an object of the supclass
- value contains fields from superclass and fields that don't exist in any of subclasses -> the `UnrecognizedPropertyException` is thrown
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
評価
この issue はまだ評価されていません。