У меня есть следующий JSON:
{
"item": [
{ "foo": 1 },
{ "foo": 2 }
]
}
Это в основном объект, содержащий набор элементов.
Итак, я создал класс для десериализации:
public class ItemList {
@JsonProperty("item")
List<Item> items;
// Getters, setters & co.
// ...
}
Все работает хорошо до этого момента.
Теперь, чтобы облегчить мою жизнь в другом месте, я решил, что было бы неплохо иметь возможность итерации объекта ItemList и позволить ему реализовать интерфейс Collection.
Итак, в основном мой класс стал:
public class ItemList implements Collection<Item>, Iterable<Item> {
@JsonProperty("item")
List<Item> items;
// Getters, setters & co.
// Generated all method delegates to items. For instance:
public Item get(int position) {
return items.get(position);
}
}
Реализация работает правильно и красиво. Однако десериализация теперь терпит неудачу.
Похоже, Джексон путается:
com.fasterxml.jackson.databind.JsonMappingException: не удается десериализовать экземпляр com.example.ItemList из токена START_OBJECT
Я попытался добавить @JsonDeserialize(as=ItemList.class)
, но это не помогло.
Как поступить?