JAVA使用Gson排除特定欄位
阿新 • • 發佈:2018-12-13
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(); } }