无法从 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
,反序列化应该会起作用
下面提到的是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
,反序列化应该会起作用