无法从 START_ARRAY 令牌中反序列化 java.util.LinkedHashMap 的实例

Can not deserialize instance of java.util.LinkedHashMap out of START_ARRAY token

下面提到的是JSON字符串,resultString:

{
"imageMaps": [{
        "crc": "c2c4",
        "flags": "0",
        "length": "117384",
        "index": 1,
        "version": "1.1.90ea",
        "status": ""
    }, {
        "crc": "7601",
        "flags": "8",
        "length": "117592",
        "index": 2,
        "version": "1.1.90ed",
        "status": ""
    }],
    "complete": true,
    "nextBootImageVersion": "",
    "lastKnownGoodImageVersion": "1.1.90ed",
    "runningImageVersion": "1.1.90ed"
}

我想把同一个转换成class的对象 A:

public class A {

    private boolean complete;

    private String message;

    private String lastKnownGoodImageVersion;

    private String nextBootImageVersion;

    private String runningImageVersion;

    private Map<String, B> imageMaps;

    private  List<B> images;

    private MacID macId;

}

我正在尝试使用以下代码将 json 转换为 class A 的对象:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);    
A a = objectMapper.readValue(resultString, A.class);

class B 的代码是:

public static class B {
    public String version;
    public int flags; 
    public int crc; 
    public long length; 
    public String index;
    public String status;
}

但出现异常:

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.LinkedHashMap out of START_ARRAY token

您在 class 中将 属性 imageMaps 声明为 Map<String, B>,但在您的 JSON 中 imageMaps 是 B 的数组. 如果在 JSON.

中将 imageMaps 更改为 images,反序列化应该会起作用