杰克逊:如何将列表反序列化为字段的值

时间:2020-05-27 09:41:09

标签: java json jackson jackson-databind

我正在使用Jackson作为将输入JSON反序列化为Java POJO的工具。但是,我需要将列表值反序列化到包装类的字段中。这是示例代码:

class Hello {
    private ListWrapper list;
}

class ListWrapper {
    private List<Item> unnamed;
}

class Item {
    // some fields
}

如果用户输入如下,我希望将其反序列化为带有“列表”字段的Hello实例,该实例包含一个ListWrapper实例,该实例的“未命名”字段中包含这些项目。

{
    "list": [
        {
            // item1
        }
        {
            // item2
        }
    ]
}

请注意,我不想自定义@JsonDeserialize使用的反序列化器,因为我希望Jackson为我对Item进行映射验证。

有可能吗?又如何?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用以下Jackson注释来完成此操作:

class Hello {
    @JsonUnwrapped
    private ListWrapper list;
}

class ListWrapper {
    @JsonProperty("list")
    private List<Item> unnamed;
}