単純にフィールドを一時的にします (のようにprivate transient int field = 4;
)。GSONはそれを理解しています。
編集
組み込みの注釈は必要ありません。Gson を使用すると、フィールドとクラスを除外するための独自の戦略を組み込むことができます。パスまたはネスト レベルに基づくことはできませんが、注釈と名前は問題ありません。
クラス「my.model.Person」の「lastName」という名前のフィールドをスキップしたい場合は、次のような除外戦略を作成できます。
class MyExclusionStrategy implements ExclusionStrategy {
public boolean shouldSkipField(FieldAttributes fa) {
String className = fa.getDeclaringClass().getName();
String fieldName = fa.getName();
return
className.equals("my.model.Person")
&& fieldName.equals("lastName");
}
@Override
public boolean shouldSkipClass(Class<?> type) {
// never skips any class
return false;
}
}
独自の注釈を作成することもできます。
@Retention(RetentionPolicy.RUNTIME)
public @interface GsonRepellent {
}
shouldSkipField
メソッドを次のように書き換えます。
public boolean shouldSkipField(FieldAttributes fa) {
return fa.getAnnotation(GsonRepellent.class) != null;
}
これにより、次のようなことが可能になります。
public class Person {
@GsonRepellent
private String lastName = "Troscianko";
// ...
カスタム ExclusionStrategy を使用するには、ビルダーを使用して Gson オブジェクトをビルドします。
Gson g = new GsonBuilder()
.setExclusionStrategies(new MyOwnExclusionStrategy())
.create();