我正在创建具有嵌套列表的API。杰克逊似乎是创建对象的好工具,但我还不太清楚如何嵌套列表,我想知道它是否可能。
我的对象看起来像这样。
public class Order { public String name; public List<Item> items; }
我希望有一种将其映射到看起来像这样的json的方法:
{ name : "A name" items : { elements : [{ price : 30 }] } }
我们希望能够做到这一点,因此我们可以将属性添加到列表中。
您可以为编写自定义解串器List<Item> items。请参见以下示例:
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; }