Gson シリアル化から特定のフィールド プロパティを除外する
Gson では、カスタム フィールド除外戦略を通じて、アノテーションを使用せずに特定のフィールド プロパティを除外できます。 ExclusionStrategy インターフェイスを実装すると、要件に基づいて除外基準をカスタマイズできます。
1 つのアプローチは、Gson が提供する FieldAttributes オブジェクトに基づいてフィールド除外戦略を作成することです。 FieldAttributes はネストされたプロパティへの直接のアクセスを提供しませんが、リフレクションを使用してオブジェクト グラフを走査して、特定のフィールド プロパティの組み合わせを確認できます。
たとえば、国を除外します。 name プロパティでは、次の除外戦略を使用できます。
public class FieldExclusionStrategy implements ExclusionStrategy { private List<String> excludedProperties; public FieldExclusionStrategy(List<String> excludedProperties) { this.excludedProperties = excludedProperties; } @Override public boolean shouldSkipField(FieldAttributes fieldAttributes) { String fieldName = fieldAttributes.getName(); for (String excludedProperty : excludedProperties) { if (fieldName.startsWith(excludedProperty)) { return true; } } return false; } @Override public boolean shouldSkipClass(Class<?> clazz) { return false; } }
たとえば、次のように除外戦略を使用します。
Gson gson = new GsonBuilder() .setExclusionStrategies(new FieldExclusionStrategy(Arrays.asList("country.name"))) .create();
または、SerializedName アノテーションを使用して、同様の結果を得ることができます。 country.name プロパティに @SerializedName(value = "my CountryName") の注釈を付けることで、シリアル化中に使用されるプロパティのカスタム名を指定できます。これにより、元の country.name プロパティを JSON 出力から除外できます。
以上がアノテーションなしで特定の Gson フィールド プロパティを除外するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。