如何忽略使用GSON在对象列表中的对象内定义的瞬态字段

时间:2016-10-18 05:28:33

标签: java gson

我有两个A和B类: 以下是代码:

ISample

使用gson API如何排除B类中的瞬态字段.GsonBuilder类中的excludeFieldsWithModifiers方法将仅排除A类的瞬态字段而不排除B类的瞬态字段,因为类A包含类B的对象列表,而字段2在类B中定义。

2 个答案:

答案 0 :(得分:2)

Gson序列化List<B>时,它实际上会序列化列表内容。当然,它会跳过内容模型中的瞬态字段。

答案 1 :(得分:1)

默认情况下,如果将字段标记为瞬态,则会将其排除。同样,如果字段标记为“静态”,则默认情况下将其排除。 如果你在B类的某处使用了以下语句,它将包含瞬态字段并仅排除指定的修饰符,在所述情况下为“static”

Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.STATIC).create();

您可以添加瞬态修改器以排除瞬态字段:

import java.lang.reflect.Modifier;

Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.STATIC, Modifier.TRANSIENT).create();

这将排除所有瞬态字段和您添加的任何先前修饰符。