Gson öğrenmeye çalışıyorum ve alan dışlanmasıyla mücadele ediyorum. İşte sınıflarım
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;
}
Ben GsonBuilder kullanmak ve böyle bir alan adı için bir ExclusionStrategy ekleyebilir firstName
veya country
ama gibi bazı alanların özelliklerini dışlamak yönetmek gibi olamaz country.name
.
public boolean shouldSkipField(FieldAttributes fa)
FieldAttributes yöntemi kullanarak alanı benzer bir filtreyle eşleştirmek için yeterli bilgi içermiyor country.name
.
Not: Bu konuda iyileştirmek ve alanları filtrelemek için RegEx kullanmak istediğimden ek açıklamalardan kaçınmak istiyorum.
Düzenleme : Struts2 JSON eklentisi davranışını taklit mümkün olup olmadığını görmek için çalışıyorum
Gson kullanarak
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</interceptor-ref>
Düzenleme: Aşağıdaki ekleme ile soruyu yeniden açtım:
Bu sorunu açıklığa kavuşturmak için aynı türde ikinci bir alan ekledim. Temelde hariç tutmak istiyorum country.name
ama değil countrOfBirth.name
. Ayrıca Ülke'yi tür olarak hariç tutmak istemiyorum. Türler aynıdır, nesne grafiğinde tam olarak saptamak ve hariç tutmak istediğim gerçek yerdir.
JsonSerializer
tür için özel bir durum oluşturmaya dayanır - Country
sizin ExclusionStrategy
durumunuzda - daha sonra uygulanır ve hangi alanların serileştirileceğine karar verir.