在以下JSON结构中,fileMetaData参数具有不同的类型。Jackson抛出一个例外com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of com.XXX.XXX.XXX.FILENAME out of START_ARRAY token。示例JSON负载:[
{
"fileName": "file_name_1",
"fileMetaData": {
"abcd": "valueabcd",
"xyz": "valuexyz"
}
},
{
"fileName": "file_name_2",
"fileMetaData": [
{
"123": "value123",
"456": "value456"
},
{
"123": "value123-1",
"456": "value456-1"
}
]
},
{
"fileName": "file_name_3",
"fileMetaData": {
"key1": {
"key11": "val11",
"key12": "val22"
},
"key2": "val2"
}
},
{
"fileName": "abc.xyz",
"fileMetaData": null
}]如何反序列化?
2 回答

墨色风雨
TA贡献1853条经验 获得超6个赞
您可以将数据反序列化为JSONNode。您可以使用isArray()方法检查,然后相应地将其转换为POJO。
将JSON数据作为JsonNode读取
String json = "{ \"f1\" : \"v1\" } "; ObjectMapper mapper = new ObjectMapper(); JsonNode jsonNode = mapper.readTree(json);
检查使用isArray()的JSONNode
if(jsonNode .isArray()){ //Do below }
将节点转换为POJO
// acquire reader for the right type ObjectReader reader = mapper.readerFor(new TypeReference<List<String>>() { }); // use it List<String> list = reader.readValue(arrayNode);
添加回答
举报
0/150
提交
取消