java - 使用 Array 或 String 解析 JSON 实例类型
问题描述
我正在尝试使用 Jackson 解析 JSON 数据,发现该实例有时是数组或字符串
带有 String 的 JSON DATA 实例:
{
"Value" : "1"
}
带有 Array 的 JSON DATA 实例:
{
"Value" : ["ram","kumar"]
}
由于出现此错误,下面给出
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot
deserialize instance of `java.util.ArrayList` out of VALUE_STRING token
这种情况如何解决,谢谢
当前的java代码
ObjectMapper objectMapper = new ObjectMapper();
try {
String jsonInString = objectMapper.writeValueAsString(products.get(j));
InventoryParser inventoryParser =
objectMapper.readValue(jsonInString, InventoryParser.class);
System.out.println(inventoryParser.getName());
}
catch (IOException e)
{
e.printStackTrace();
}
}
解决方案
您可以编写自定义反序列化器并编写自定义逻辑来处理此类数据。在反序列化器中,您可以检查节点是否为数组。
请参考使用 jackson xml mapper 将 xml 反序列化到 pojo(示例在 XML 中,但也可以通过 using 类似地用于 JSON ObjectMapper
)