使用 Jackson 将 JSON 反序列化为多态类型 - 一个完整的示例给了我一个编译错误
我正在尝试完成程序员布鲁斯的教程,该教程应该允许多态JSON的反序列化。
完整的列表可以在这里找到 程序员布鲁斯教程 (顺便说一句,很棒的东西)
我已经完成了前五个没有问题,但我在最后一个(示例6)上遇到了一个障碍,这当然是我真正需要工作的一个障碍。
我在编译时收到以下错误
对象映射器类型中的方法 readValue(JsonParser, Class) 不适用于参数(ObjectNode,Class)
它是由代码块引起的
public Animal deserialize(
JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
ObjectMapper mapper = (ObjectMapper) jp.getCodec();
ObjectNode root = (ObjectNode) mapper.readTree(jp);
Class<? extends Animal> animalClass = null;
Iterator<Entry<String, JsonNode>> elementsIterator =
root.getFields();
while (elementsIterator.hasNext())
{
Entry<String, JsonNode> element=elementsIterator.next();
String name = element.getKey();
if (registry.containsKey(name))
{
animalClass = registry.get(name);
break;
}
}
if (animalClass == null) return null;
return mapper.readValue(root, animalClass);
}
}
特别是按生产线
return mapper.readValue(root, animalClass);
以前有人遇到过这种情况吗?如果是这样,有没有解决方案?
我很感激任何人都可以提前感谢Jon D的任何帮助。