valik
valik

Reputation: 2094

Jackson databind MismatchedInputException

Using spring configuration to read data from json into spring bean it works for simple type but i am getting the above error when try to read an array This is my config

@Bean
Container container() throws IOException {

    ObjectMapper objectMapper = new ObjectMapper();

    return objectMapper.readValue(getClass().getClassLoader().getResource("book.json"), Container.class);
}

I have decided to put in a container as suggested so its ok to have my config look like this ? As i will be using these data to create Some spring controllers. POJO CLASS

public class Container {
String requestedUrl;
  List<Item> items;}

This is the json data ,

{
  "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 

How can edit the config to get it work

Upvotes: 1

Views: 319

Answers (1)

Dmitry Margolis
Dmitry Margolis

Reputation: 142

You are passing the json object which is bounded by {} but trying to convert it to array. With this json you should convert to another class like

public class Container {
    private String requestedUrl;
    private List<Item> items;

    // getters/setters
}

Upvotes: 2

Related Questions