转发来自:JAVA使用Gson排除特定字段
1. 忽略值为NULL
Gson gson = new GsonBuilder().serializeNulls().create();
2. 使用Java关键字transient
class Item {
String name;
public transient int age;
}
3. 使用@Expose注解
class Item {
String name;
@Expose
public int age;
public void gson() {
// 必须使用excludeFieldsWithoutExposeAnnotation
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation()
.create();
}
}
4. 排除Modifier修饰符为指定类型的字段
class Item {
String name;
@Expose
public int age;
public void gson() {
// 过滤掉声明为 protcted 的变量
Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED).create();
}
}
5. 使用ExclusionStrategy定制字段排除策略
class Item {
String name;
@Expose
public int age;
public void gson() {
// 过滤掉声明为 protcted 的变量
Gson gson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
//过滤掉字段名包含"age"
return f.getName().contains("age");
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
//过滤掉 类名包含 Bean的类
return clazz.getName().contains("Bean");
}
}).create();
}
}
网友评论