Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mengecualikan Sifat Medan Gson Tertentu Tanpa Anotasi?
Mengecualikan Sifat Medan Tertentu daripada Pensirilan Gson
Dalam Gson, mengecualikan sifat medan tertentu tanpa menggunakan anotasi boleh dicapai melalui strategi pengecualian medan tersuai. Dengan melaksanakan antara muka ExclusionStrategy, anda boleh menyesuaikan kriteria pengecualian berdasarkan keperluan anda.
Salah satu pendekatan ialah mencipta strategi pengecualian medan berdasarkan objek FieldAttributes yang disediakan oleh Gson. Walaupun FieldAttributes tidak memberikan akses terus kepada sifat bersarang, anda boleh melintasi graf objek menggunakan pantulan untuk menyemak gabungan sifat medan tertentu.
Contohnya, untuk mengecualikan negara. nama harta, anda boleh menggunakan strategi pengecualian berikut:
public class FieldExclusionStrategy implements ExclusionStrategy { private List<String> excludedProperties; public FieldExclusionStrategy(List<String> excludedProperties) { this.excludedProperties = excludedProperties; } @Override public boolean shouldSkipField(FieldAttributes fieldAttributes) { String fieldName = fieldAttributes.getName(); for (String excludedProperty : excludedProperties) { if (fieldName.startsWith(excludedProperty)) { return true; } } return false; } @Override public boolean shouldSkipClass(Class<?> clazz) { return false; } }
Dalam contoh anda, anda akan gunakan strategi pengecualian seperti berikut:
Gson gson = new GsonBuilder() .setExclusionStrategies(new FieldExclusionStrategy(Arrays.asList("country.name"))) .create();
Sebagai alternatif, anda boleh menggunakan anotasi SerializedName untuk mencapai hasil yang serupa. Dengan menganotasi sifat country.name dengan @SerializedName(value = "myCountryName"), anda boleh menentukan nama tersuai untuk sifat yang akan digunakan semasa penyirian. Ini membolehkan anda mengecualikan harta country.name asal daripada output JSON.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengecualikan Sifat Medan Gson Tertentu Tanpa Anotasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!