Désérialiser JSON avec Jackson en types polymorphes - Clarification de l'erreur de compilation
L'erreur rencontrée dans l'extrait de code fourni concerne l'utilisation incorrecte du méthode readValue d'ObjectMapper. Plus précisément, les types d'arguments ne correspondent pas à la signature de méthode attendue.
Signature de méthode attendue :
public <T> T readValue(JsonParser jp, Class<T> valueType) throws IOException, JsonProcessingException
Appel de méthode erroné :
return mapper.readValue(root, animalClass);
Dans l'appel erroné, le premier argument est un ObjectNode au lieu d'un JsonParser. Ce type d'argument incorrect se produit car le code tente d'utiliser mapper.readTree(jp) pour récupérer un ObjectNode du JsonParser. Cependant, la méthode correcte pour cette conversion est mapper.readtree(jp) (notez le "t" minuscule dans "Tree").
Solution :
Pour rectifier l'erreur de compilation, remplacez la ligne par :
return mapper.readValue(mapper.readTree(jp), animalClass);
Cette correction garantit que le premier argument de readValue est un JsonParser et que le deuxième argument est le type de classe cible, animalClass.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!