Jackson を使用した JSON の多態性型への逆シリアル化 - コンパイル エラーの明確化
提供されたコード スニペットで発生したエラーは、 ObjectMapper の readValue メソッド。具体的には、引数の型が予期されたメソッド シグネチャと一致しません。
予期されたメソッド シグネチャ:
public <T> T readValue(JsonParser jp, Class<T> valueType) throws IOException, JsonProcessingException
間違ったメソッド呼び出し:
return mapper.readValue(root, animalClass);
間違った呼び出しでは、最初の引数は ではなく ObjectNode です。 JsonParser。この不正な引数の型は、コードが mapper.readTree(jp) を使用して JsonParser から ObjectNode を取得しようとするために発生します。ただし、この変換の正しいメソッドは、mapper.readtree(jp) です (「Tree」の「t」が小文字であることに注意してください)。
解決策:
を修正するにはコンパイル エラーが発生した場合は、行を次のように変更します。
return mapper.readValue(mapper.readTree(jp), animalClass);
この修正により、readValue の最初の引数が確実にJsonParser であり、2 番目の引数はターゲット クラス タイプ、animalClass です。
以上がJackson を使用して JSON をポリモーフィック型に逆シリアル化しようとするとコンパイル エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。