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 firstNameatau countrytetapi 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.nametetapi 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.
JsonSerializeruntuk beberapa jenis - Countrydalam kasus Anda - yang kemudian diterapkan ExclusionStrategyyang memutuskan bidang apa untuk diserialisasi.