1.忽略值为null
// Gson生成json时候,会忽略掉值为null的key
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();
}
}
总结:
使用transient最为方便
1.忽略值为null
// Gson生成json时候,会忽略掉值为null的key
Gson gson = new GsonBuilder().serializeNulls().create();