ฉันพยายามที่จะเรียนรู้ Gson และฉันกำลังดิ้นรนกับการกีดกันภาคสนาม นี่คือชั้นเรียนของฉัน
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;
}
ฉันสามารถใช้ GsonBuilder และเพิ่ม ExclusionStrategy สำหรับชื่อฟิลด์เหมือนfirstName
หรือแต่ฉันไม่สามารถดูเหมือนจะจัดการเพื่อยกเว้นคุณสมบัติของเขตข้อมูลบางอย่างเช่นcountry
country.name
การใช้วิธีการpublic boolean shouldSkipField(FieldAttributes fa)
นี้ FieldAttributes มีข้อมูลไม่เพียงพอที่จะจับคู่ฟิลด์กับตัวกรองcountry.name
ดังนี้
PS: ฉันต้องการหลีกเลี่ยงคำอธิบายประกอบเนื่องจากฉันต้องการปรับปรุงเรื่องนี้และใช้ RegEx เพื่อกรองฟิลด์
แก้ไข : ฉันพยายามดูว่าเป็นไปได้ที่จะเลียนแบบพฤติกรรมของปลั๊กอิน Struts2 JSON
ใช้งาน Gson
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</interceptor-ref>
แก้ไข: ฉันเปิดคำถามอีกครั้งด้วยการเพิ่มต่อไปนี้:
ฉันได้เพิ่มเขตข้อมูลที่สองที่มีประเภทเดียวกันเพื่ออธิบายปัญหานี้ให้ละเอียดยิ่งขึ้น โดยทั่วไปฉันต้องการยกเว้นแต่ไม่country.name
countrOfBirth.name
ฉันไม่ต้องการยกเว้นประเทศเป็นประเภท ดังนั้นประเภทจะเหมือนกันคือสถานที่จริงในกราฟวัตถุที่ฉันต้องการระบุและยกเว้น
JsonSerializer
สำหรับบางประเภท - Country
ในกรณีของคุณซึ่งจะถูกนำไปใช้ExclusionStrategy
ซึ่งจะตัดสินใจว่าฟิลด์ใดที่จะทำให้เป็นอันดับ