Maison  >  Article  >  Java  >  Pourquoi est-ce que j'obtiens une erreur de compilation lorsque j'essaie de désérialiser JSON avec Jackson en types polymorphes ?

Pourquoi est-ce que j'obtiens une erreur de compilation lorsque j'essaie de désérialiser JSON avec Jackson en types polymorphes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-19 08:31:02645parcourir

Why am I getting a compile error when trying to deserialize JSON with Jackson into polymorphic types?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn