Jackson มีคลาสชื่อว่า SimpleBeanPropertyFilter ที่ช่วยกรองฟิลด์ระหว่างการทำให้เป็นอนุกรมและการดีซีเรียลไลเซชัน ไม่ใช่ทั่วโลก ฉันคิดว่านั่นคือสิ่งที่คุณต้องการ
@JsonFilter("custom_serializer")
class User {
private String password;
//setter, getter..
}
จากนั้นในรหัสของคุณ:
String[] fieldsToSkip = new String[] { "password" };
ObjectMapper mapper = new ObjectMapper();
final SimpleFilterProvider filter = new SimpleFilterProvider();
filter.addFilter("custom_serializer",
SimpleBeanPropertyFilter.serializeAllExcept(fieldsToSkip));
mapper.setFilters(filter);
String jsonStr = mapper.writeValueAsString(currentUser);
สิ่งนี้จะป้องกันไม่ให้password
ฟิลด์รับต่อเนื่อง นอกจากนี้คุณจะสามารถยกเลิกการซีเรียลpassword
ฟิลด์ตามที่เป็น เพียงตรวจสอบให้แน่ใจว่าไม่มีการใช้ตัวกรองกับวัตถุ ObjectMapper
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(yourJsonStr, User.class); // user object does have non-null password field