小编典典

杰克逊列表反序列化。嵌套列表

json

我正在创建具有嵌套列表的API。杰克逊似乎是创建对象的好工具,但我还不太清楚如何嵌套列表,我想知道它是否可能。

我的对象看起来像这样。

public class Order {
    public String name;
    public List<Item> items;
}

我希望有一种将其映射到看起来像这样的json的方法:

{
    name : "A name"
    items : { 
        elements : [{
            price : 30
        }]
    }
}

我们希望能够做到这一点,因此我们可以将属性添加到列表中。


阅读 234

收藏
2020-07-27

共1个答案

小编典典

您可以为编写自定义解串器List<Item> items。请参见以下示例:

class ItemsJsonDeserializer extends JsonDeserializer<List<Item>> {

    @Override
    public List<Item> deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
        InnerItems innerItems = jp.readValueAs(InnerItems.class);

        return innerItems.elements;
    }

    private static class InnerItems {
        public List<Item> elements;
    }
}

现在,您必须通知Jackson将其用于您的财产。您可以通过以下方式执行此操作:

public class Order {
  public String name;
  @JsonDeserialize(using = ItemsJsonDeserializer.class)
  public List<Item> items;
}
2020-07-27