首页 > 解决方案 > 如何使用 Jackson API 在序列化和反序列化上使用不同的 JSONProperty?

问题描述

我有一个 Java 对象“ Author ”,然后将其重组为“Author”的 Ararylist。作者对象直接作为 JSON 保存在 DB 中,如下所示:

{"author":{"id":1,"recordId":0}}

所以我早期的 Java 领域是:

private Author author = new Author();

新的是:

private List<Author> authorList;

问题是我如何编写代码以使用authorList序列化对象,但还需要反序列化旧的“作者”。

我使用@JsonProperty来读取已经保存的author数据,但这也保存了名为“Author”的 Arraylist,我需要将其命名为authorList

@JsonProperty(value="author")
@JsonDeserialize(using = AuthorDeserializer.class)

标签: javaserializationjacksondeserializationobjectmapper

解决方案


谷歌搜索我找到了解决方案。我们可以使用@JsonAlias最新的 Jackson API (2.9.7) 所以在我的情况下,我想要这个别名用于反序列化@JsonAlias(value={"author","authorList"})

JSON Jackson 将不同的键解析到同一个字段中


推荐阅读