我正在尝试完成Programmer Bruce的教程,目的是允许多态JSON的反序列化。
完整列表可以在这里找到:Programmer Bruce教程(非常棒的资料)
我已经顺利地完成了前五个,但在最后一个(示例6)遇到了问题,而这显然是我需要确保其正常运行的一部分。
我在编译时遇到了以下错误:
ObjectMapper类中的readValue(JsonParser, Class)方法对于参数 (ObjectNode, Class<capture#6-of ? extends Animal>) 不适用
这个错误是由下面这段代码引起的
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);
有人遇到过这个问题吗?如果有,是否有解决方法?