Maison >Java >javaDidacticiel >Comment Jackson peut-il être utilisé pour résoudre l'effacement de types lors de la désérialisation de types génériques ?
Dans votre scénario complexe, vous essayez de désérialiser les données JSON dans une méthode générique qui attend une MyRequest< ;T> taper. Cependant, Jackson rencontre un problème dû à l'effacement du type Java, où le type générique T n'est pas conservé au moment de l'exécution. Par conséquent, Jackson traite le MyRequest
Pour résoudre ce problème et spécifier le type attendu à renvoyer comme T, vous devez fournir à Jackson un message explicite tapez des informations. Ceci peut être réalisé en construisant un objet JavaType à l'aide des méthodes getTypeFactory() et constructCollectionType() :
<code class="java">JavaType type = mapper.getTypeFactory() .constructCollectionType(List.class, Foo.class);</code>
Remplacez List.class par le type de liste que vous souhaitez désérialiser (par exemple, List
Une fois que vous avez l'objet JavaType, vous pouvez l'utiliser pour désérialiser les données JSON dans le type générique attendu :
<code class="java">List<Foo> list = mapper.readValue(new File("input.json"), type);</code>
En fournissant à Jackson ces informations de type explicites, il désérialisera correctement le MyRequest
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!