下面提到的是 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 类的对象:
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 转换为 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;
}
但得到异常(exception):
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.LinkedHashMap out of START_ARRAY token
最佳答案
您申报的属性(property)imageMaps
作为 Map<String, B>
在您的类(class)中,但在您的 JSON 中 imageMaps
是 B 的数组。如果您更改 imageMaps
,反序列化应该可以工作至 images
在你的 JSON 中。
关于jackson - 无法从 START_ARRAY token 反序列化 java.util.LinkedHashMap 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51021909/