ホームページ > Java > &#&チュートリアル > 注釈なしで Gson シリアル化から特定のフィールドを除外するにはどうすればよいですか?

注釈なしで Gson シリアル化から特定のフィールドを除外するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-09 00:51:10
オリジナル
182 人が閲覧しました

How to Exclude Specific Fields from Gson Serialization without Annotations?

Gson: 注釈なしのシリアル化から特定のフィールドを除外する

注釈なしで Gson のシリアル化から特定のフィールドを除外するのは難しい場合があります。カスタム ExclusionStrategy を使用してこれを実現する方法は次のとおりです。

Custom ExclusionStrategy

Gson は、フィールドの除外方法をカスタマイズできる ExclusionStrategy インターフェイスを提供します。このインターフェイスの実装を作成します。

public class FieldExclusionStrategy implements ExclusionStrategy {

    private Pattern pattern;

    public FieldExclusionStrategy(String regex) {
        pattern = Pattern.compile(regex);
    }

    @Override
    public boolean shouldSkipField(FieldAttributes fa) {
        String fieldName = fa.getName();
        return pattern.matcher(fieldName).matches();
    }

    @Override
    public boolean shouldSkipClass(Class<?> clazz) {
        return false;
    }
}
ログイン後にコピー

除外のカスタマイズ

この例では、ExclusionStrategy は指定された正規表現に基づいてフィールドを除外します。 country.name など、除外するフィールドに一致するパターンをカスタマイズできます。

ExclusionStrategy の使用

ExclusionStrategy を定義したら、設定時にそれを使用します。 GsonBuilder:

Gson gson = new GsonBuilder()
    .setExclusionStrategies(new FieldExclusionStrategy("country.name"))
    .create();
ログイン後にコピー

の使用法例

Gson を設定した後、次のように Student オブジェクトをシリアル化できます。

String json = gson.toJson(student);
ログイン後にコピー

これにより、シリアル化された JSON 出力から country.name フィールドが除外されます。

補足

  • ご希望の場合は他の基準 (型や注釈など) に基づいてフィールドを除外する場合は、それに応じて shouldSkipField メソッドと shouldSkipClass メソッドを変更できます。
  • 同じ型のフィールドの場合、除外ルールは特定のフィールド パスに適用されます。この場合、countryOfBirth.name は除外されません。
  • 型全体を除外するには、ExclusionStrategy の shouldSkipClass メソッドをオーバーライドします。

以上が注釈なしで Gson シリアル化から特定のフィールドを除外するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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