ホームページ > Java > &#&チュートリアル > 効率的なデータ解析のために Gson でカスタム JSON デシリアライザーを作成する方法

効率的なデータ解析のために Gson でカスタム JSON デシリアライザーを作成する方法

Susan Sarandon
リリース: 2024-12-17 11:26:26
オリジナル
749 人が閲覧しました

How to Write a Custom JSON Deserializer in Gson for Efficient Data Parsing?

Gson 用のカスタム JSON デシリアライザーの作成

JSON オブジェクトを扱う場合、カスタム Java クラスへのデシリアライズは不可欠なタスクです。人気の JSON パーサーである Gson を使用すると、特定のシナリオを処理するカスタム デシリアライザーを作成できます。

このガイドでは、Java があるシナリオを使用して、Gson 用のカスタム JSON デシリアライザーを作成する方法を検討します。ユーザー情報とユーザーの JSON リストを表すクラス User。

問題

User クラスに逆シリアル化する必要があるユーザー オブジェクトの JSON リストがあります。ただし、カスタム デシリアライザーは正しく動作しません。

解決策

Gson 用のカスタム JSON デシリアライザーを作成するには、JsonDeserializer インターフェイスを実装し、デシリアライズ メソッドを提供します。 。このメソッドは、JSON 要素、逆シリアル化する型、および JSON 逆シリアル化コンテキストを引数として受け取ります。

たとえば、次の調整されたコードを考えてみましょう。

@Override
public User deserialize(JsonElement json, Type type,
                        JsonDeserializationContext context) throws JsonParseException {
    int id = json.getAsJsonObject().get("id").getAsInt();
    String name = json.getAsJsonObject().get("name").getAsString();
    Timestamp updateDate = context.deserialize(json.getAsJsonObject().get("update_date"), Timestamp.class);

    return new User(id, name, updateDate);
}
ログイン後にコピー

追加考慮事項

次に示すように、別のアプローチを使用してコード内の手動解析を最小限に抑えることもできます。以下:

public static void main(String[] args) {
    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
    gsonBuilder.registerTypeAdapter(Timestamp.class, new TimestampDeserializer());
    Gson gson = gsonBuilder.create();
    User[] users = gson.fromJson(jsonInput, User[].class);
}

class TimestampDeserializer implements JsonDeserializer<Timestamp> {
    @Override
    public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
            throws JsonParseException {
        long time = Long.parseLong(json.getAsString());
        return new Timestamp(time);
    }
}
ログイン後にコピー

このアプローチでは、TimestampDeserializer を使用して Timestamp オブジェクトの逆シリアル化を処理し、逆シリアル化メソッドでの手動解析を最小限に抑えます。

以上が効率的なデータ解析のために Gson でカスタム JSON デシリアライザーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート