Java對象轉Json是一項常見的操作,通常情況下,我們會將整個對象都轉成Json格式,但是在某些情況下,我們希望在轉換的過程中忽略掉某些字段,這時就需要使用忽略字段的功能。
public class Student { private String name; private int age; private String gender; private String phoneNumber; private String email; // 省略getter/setter方法 } public class GsonUtil { public static Gson gson = new GsonBuilder().setPrettyPrinting().create(); public static String toJson(Object object, String... ignoreFields) { Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.STATIC, Modifier.TRANSIENT).setPrettyPrinting().create(); if (ignoreFields != null && ignoreFields.length >0) { gson = new GsonBuilder().addSerializationExclusionStrategy(new ExclusionStrategy() { @Override public boolean shouldSkipField(FieldAttributes fieldAttributes) { for (String ignoreField : ignoreFields) { if (ignoreField.equals(fieldAttributes.getName())) { return true; } } return false; } @Override public boolean shouldSkipClass(Class>clazz) { return false; } }).excludeFieldsWithModifiers(Modifier.STATIC, Modifier.TRANSIENT).setPrettyPrinting().create(); } return gson.toJson(object); } }
以上是一個示例代碼,其中Student是我們需要進行轉換的Java對象,GsonUtil是轉換工具類。其中,toJson方法的第一個參數是需要轉換的Java對象,第二個參數ignoreFields是我們需要忽略的字段名,可以傳入多個參數。
在toJson方法內部,我們通過GsonBuilder的excludeFieldsWithModifiers方法來排除靜態和瞬時的字段。如果傳入了ignoreFields參數,我們則加入了一個序列化忽略策略,使用addSerializationExclusionStrategy方法實現。其中shouldSkipField方法會遍歷傳入的忽略字段名,如果當前的字段名等于任意一個忽略字段名,則返回true,進行忽略操作。