Невозможно десериализовать экземпляр java.util.LinkedHashMap из маркера START_ARRAY. - PullRequest
0 голосов
/ 25 июня 2018

Ниже упоминается строка 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"
}

Я хочу получить то же преобразованное в объект класса A.

открытый класс 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 в объект класса A, используя код:

  ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

A a = objectMapper.readValue (resultString, A.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: Невозможно десериализовать экземпляр Java.util.LinkedHashMap из токена START_ARRAY

1 Ответ

0 голосов
/ 25 июня 2018

Вы объявили свойство imageMaps как Map<String, B> в своем классе, но в вашем JSON imageMaps - это массив B. Десериализация должна работать, если вы измените imageMaps на images в своем JSON.

...