Tôi đang cố gắng học Gson và tôi đang vật lộn với loại trừ trường. Đây là lớp học của tôi
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;
}
Tôi có thể sử dụng GsonBuilder và thêm ExinatingStrargety cho một tên trường như firstName
hoặc country
nhưng dường như tôi không thể quản lý để loại trừ các thuộc tính của các trường nhất định như country.name
.
Sử dụng phương thức public boolean shouldSkipField(FieldAttributes fa)
, FieldAttribution không chứa đủ thông tin để khớp trường với bộ lọc như thế nào country.name
.
PS: Tôi muốn tránh các chú thích vì tôi muốn cải thiện điều này và sử dụng RegEx để lọc các trường.
Chỉnh sửa : Tôi đang cố gắng xem liệu có thể mô phỏng hành vi của plugin Struts2 JSON không
sử dụng Gson
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</interceptor-ref>
Chỉnh sửa: Tôi mở lại câu hỏi với phần bổ sung sau:
Tôi đã thêm một trường thứ hai với cùng loại để làm rõ hơn vấn đề này. Về cơ bản tôi muốn loại trừ country.name
nhưng không countrOfBirth.name
. Tôi cũng không muốn loại trừ Quốc gia thành một loại. Vì vậy, các loại giống nhau, đó là vị trí thực tế trong biểu đồ đối tượng mà tôi muốn xác định và loại trừ.
JsonSerializer
cho một số loại - Country
trong trường hợp của bạn - sau đó được áp dụng một trường ExclusionStrategy
quyết định những trường nào sẽ tuần tự hóa.