ホームページ >Java >&#&チュートリアル >Jackson の TypeReference は、一般的なクラスの逆シリアル化の問題をどのように解決できるのでしょうか?

Jackson の TypeReference は、一般的なクラスの逆シリアル化の問題をどのように解決できるのでしょうか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-06 14:09:16257ブラウズ

How Can Jackson's TypeReference Solve Generic Class Deserialization Issues?

Jackson - 逆シリアル化にジェネリックを利用する

データ処理の領域では、逆シリアル化はシリアル化されたデータをオブジェクトに変換する際に重要な役割を果たします。人気のある Java ライブラリである Jackson は、ジェネリック クラスを処理する機能など、逆シリアル化の強力なサポートを提供します。

ジェネリック クラスの逆シリアル化

Data などのジェネリック クラスを扱う場合T> (T は型パラメータを表します) では、逆シリアル化には実際の型引数を指定する必要があります。従来のアプローチには Data.class 型の使用が含まれますが、これでは一般的な情報を取得できません。

TypeReference ソリューション

Jackson は、TypeReference クラスを通じてソリューションを提供します。 TypeReference オブジェクトを作成し、ジェネリック型を指定することで、予想される型を Jackson に通知できます。

コード例

Data があるとします。クラスと、このクラスのインスタンスに逆シリアル化する必要がある JSON 文字列:

class Data<T> {
    int found;
    Class<T> hits
}

public static void main(String[] args) {
    String jsonString = "...";

    ObjectMapper mapper = new ObjectMapper();
    Data<String> deserializedData = mapper.readValue(jsonString, 
                                               new TypeReference<Data<String>>() { });
}

説明

この例では、Data< の TypeReference を作成します。文字列>それを 2 番目の引数として readValue メソッドに渡します。これは、ジェネリック型引数として String を持つ Data オブジェクトを期待するように Jackson に指示します。

以上がJackson の TypeReference は、一般的なクラスの逆シリアル化の問題をどのように解決できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。