Я хотел бы написать компонент пользовательской десериализации, который по-прежнему будет использовать некоторые возможности по умолчанию:
Представьте себе эти классы:
class Category {
private Long id;
private String name;
}
class Article {
private Long id;
private String title;
private Category category;
}
И эту полезную нагрузку JSON:
{
"id": 1,
"title": "Pray for Notre Dame",
"category_id": 5
}
С моим пониманием различных статей, которые я читаю онлайн, я должен написать собственный десериализатор для обработки моего поля category_id
:
@JsonComponent
public class ArticleJsonDeserializer extends JsonDeserializer<Article> {
@Override
public Article deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException,
JsonProcessingException {
TreeNode treeNode = jsonParser.getCodec().readTree(jsonParser);
TextNode category = this.entityManager.getReference(Category.class, treeNode.get("category_id"));
// The following lines bother me
String title = treeNode.get("title");
Long id = treeNode.get("id");
return new Article(id, title, category);
}
}
Однако на самом деле мне бы очень хотелосьиспользовать возможности десериализатора по умолчанию для полей title
и id
без перезаписи этой логики.
Как я могу это сделать?