Saya mencoba belajar Gson dan saya berjuang dengan pengecualian lapangan. Ini kelas saya
public class Student {
private Long id;
private String firstName = "Philip";
private String middleName = "J.";
private String initials = "P.F";
private String lastName = "Fry";
private Country country;
private Country countryOfBirth;
}
public class Country {
private Long id;
private String name;
private Object other;
}
Saya dapat menggunakan GsonBuilder dan menambahkan ExclusionStrategy untuk nama bidang seperti firstName
atau country
tetapi saya tidak bisa mengatur untuk mengecualikan properti dari bidang tertentu seperti country.name
.
Menggunakan metode ini public boolean shouldSkipField(FieldAttributes fa)
, FieldAttributes tidak mengandung informasi yang cukup untuk mencocokkan bidang dengan filter seperti country.name
.
PS: Saya ingin menghindari anotasi karena saya ingin memperbaiki ini dan menggunakan RegEx untuk menyaring bidang.
Sunting : Saya mencoba melihat apakah mungkin untuk meniru perilaku plugin Struts2 JSON
menggunakan Gson
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</interceptor-ref>
Sunting: Saya membuka kembali pertanyaan dengan tambahan berikut:
Saya menambahkan bidang kedua dengan tipe yang sama untuk lebih memperjelas masalah ini. Pada dasarnya saya ingin mengecualikan country.name
tetapi tidak countrOfBirth.name
. Saya juga tidak ingin mengecualikan Negara sebagai tipe. Jadi jenisnya sama, itu adalah tempat aktual di objek grafik yang ingin saya tunjuk dan kecualikan.
JsonSerializer
untuk beberapa jenis - Country
dalam kasus Anda - yang kemudian diterapkan ExclusionStrategy
yang memutuskan bidang apa untuk diserialisasi.