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

标签 java json jackson deserialization objectmapper

如何使用Jackson ObjectMapper读取下面的JSON?我已经开发了代码,但出现以下错误。

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"
    ]
  }
}

最佳答案

您需要启用ACCEPT_SINGLE_VALUE_AS_ARRAY特征。可能在 POJO 中,您有一个 List,但是当 List 中只有一个元素时,会生成 JSON 有效负载数组括号。

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);
    }
}

关于java - com.fasterxml.jackson.databind.exc.MismatchedInputException : Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58539657/

相关文章:

php - 如何使用ajax传递字符串数组?

java - NoSuchMethodError : org. codehaus.jackson.type.JavaType

java - 序列化时间戳转换为秒

Java GUI JSlider

java - JPA 映射 : "QuerySyntaxException: foobar is not mapped..."

java - Java EE Web 应用程序的架构

javascript - 循环 json 时更改 key

java - 致命异常 : main with android and eclipse

json - 如何在 Wiremock 中删除每个循环中的最后一个逗号

json - 如何从 JAXB 注释类生成 JSON 模式?