com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token

16,369

You need to enable ACCEPT_SINGLE_VALUE_AS_ARRAY feature. Probably in POJO you have a List but when there is only one element in a List JSON payload is generated without array brackets.

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.util.List;

public class JsonApp {

    public static void main(String[] args) throws Exception {
        File jsonFile = new File("./src/main/resources/test.json");

        ObjectMapper mapper = new ObjectMapper();
        mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

        Orgnization root = mapper.readValue(jsonFile, Orgnization.class);
        System.out.println(root);
    }
}
Share:
16,369

Related videos on Youtube

PAA
Author by

PAA

I am Sr. Software Engineer having 11 years of experience in Microservices, Spring Boot, Spring Batch, Spring Rest, Spring Security, Java 8, WSO2 API Manager. I also have experience in Postgres, Oracle, MongoDB and Redis. I've have extensive experience in writing Mockito based Test cases, Junit and TestNG.

Updated on June 04, 2022

Comments

  • PAA
    PAA almost 2 years

    How to read below JSON using Jackson ObjectMapper? I have developed code but getting below error.

    com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token
     at [Source: (File); line: 7, column: 19] (through reference chain: com.example.demo.resources.Orgnization["secondaryIds"])
    

    JSON

    {
      "id": "100000",
      "name": "ABC",
      "keyAccount": false,
      "phone": "1111111",
      "phoneExtn": "11",
      "secondaryIds": {
        "ROP": [
          "700010015",
          "454546767",
          "747485968",
          "343434343"
        ],
        "AHID": [
          "01122006",
          "03112001"
        ]
      }
    }