Используя конфигурацию spring для чтения данных из json в bean-компонент Spring, он работает для простого типа, но я получаю указанную выше ошибку при попытке прочитать массив это мой конфиг
@Bean
Container container() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(getClass().getClassLoader().getResource("book.json"), Container.class);
}
Я решил поместить в контейнер, как было предложено, так что нормально, чтобы моя конфигурация выглядела так? Поскольку я буду использовать эти данные для создания некоторых контроллеров Spring. ПОХО КЛАСС
public class Container {
String requestedUrl;
List<Item> items;}
Это данные json,
{
"requestedUrl": "https://www.googleapis.com/books/v1/volumes?q=java&maxResults=40",
"items": [
{
"kind": "books#volume",
"id": "7tkN1CYzn2cC",
"etag": "pfjjxSpetIM",
"selfLink": "https://www.googleapis.com/books/v1/volumes/7tkN1CYzn2cC",
"volumeInfo": {
"title": "A Hypervista of the Java Landscape",
"publisher": "InfoStrategist.com",
"industryIdentifiers": [
{
"type": "ISBN_13",
"identifier": "9781592432172"
},
{
"type": "ISBN_10",
"identifier": "1592432174"
}
],
"readingModes": {
"text": true,
"image": true
},
"printType": "BOOK",
"maturityRating": "NOT_MATURE",
"allowAnonLogging": false,
"contentVersion": "1.0.1.0.preview.3",
"imageLinks": {
"smallThumbnail": "http://books.google.com/books/content?id=7tkN1CYzn2cC&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api",
"thumbnail": "http://books.google.com/books/content?id=7tkN1CYzn2cC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api"
},
"language": "en",
"previewLink": "http://books.google.pl/books?id=7tkN1CYzn2cC&pg=PP1&dq=java&hl=&cd=1&source=gbs_api",
"infoLink": "http://books.google.pl/books?id=7tkN1CYzn2cC&dq=java&hl=&source=gbs_api",
"canonicalVolumeLink": "https://books.google.com/books/about/A_Hypervista_of_the_Java_Landscape.html?hl=&id=7tkN1CYzn2cC"
},
"saleInfo": {
"country": "PL",
"saleability": "NOT_FOR_SALE",
"isEbook": false
}, //Shortened for brevity
Как отредактировать конфиг, чтобы он работал
Вы передаете объект json, который ограничен {}, но пытаетесь преобразовать его в массив. С этим json вы должны преобразовать в другой класс, например
public class Container {
private String requestedUrl;
private List<Item> items;
// getters/setters
}
Нет, это просто тот же класс DTO, что и Item. В основном нет необходимости помещать их в конфигурацию spring. ObjectMapper исходит из библиотеки Джексона, а не напрямую из Spring.
Нет, я должен использовать Spring Bean, потому что я буду создавать API из этих данных, поэтому я обновлю свой вопрос, и вы скажете мне, все ли в порядке.
Это нормально, но из текущего примера JSON похоже, что вы должны возвращать Container, а не Container[].
И я буду использовать контейнер в весенней конфигурации?