我有一个Java对象“ Author ”,然后将其重组为“ Author”的Ararylist。 Author对象在下面直接以JSON格式保存在数据库中:
{"author":{"id":1,"recordId":0}}
所以我以前的Java字段是:
private Author author = new Author();
新的是:
private List<Author> authorList;
问题是我如何编写代码以具有带有 authorList 的序列化对象,但是还需要反序列化旧的“ Author ”。
我使用 @JsonProperty 读取已经保存的author
数据,但这也保存了名为“ Author”的Arraylist,我需要将其命名为authorList
@JsonProperty(value="author")
@JsonDeserialize(using = AuthorDeserializer.class)
答案 0 :(得分:0)
如果只需要使用“ author”属性进行反序列化,最简单的方法就是为其提供将要查找的setter方法。
例如:
@JsonProperty("author")
public void setAuthor(Author author) {
setAuthorList(new ArrayList<>(Collections.singletonList(author)));
}
答案 1 :(得分:0)
在Google上搜索,我已经找到解决方案。
我们可以使用最新的Jackson API(2.9.7)使用@JsonAlias
因此,在我的情况下,我希望使用该别名来反序列化@JsonAlias(value={"author","authorList"})
。
答案 2 :(得分:0)
您还可以将此功能添加到objectMapper:
DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY