【问题标题】:Jackson: How to deserialize a list into the value of a fieldJackson:如何将列表反序列化为字段的值
【发布时间】:2020-05-27 09:41:09
【问题描述】:

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

class Hello {
    private ListWrapper list;
}

class ListWrapper {
    private List<Item> unnamed;
}

class Item {
    // some fields
}

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

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

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

有可能吗?以及如何?

谢谢。

【问题讨论】:

    标签: java json jackson jackson-databind


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2020-05-20
      • 1970-01-01
      • 2018-05-31
      • 2016-03-21
      相关资源
      最近更新 更多