Serializacja i deserializacja z Jacksonem: jak programowo ignorować pola?
Używam Jacksona do serializowania i deserializacji obiektów. Problem polega na tym, że czasami chcę pokazać pole, a czasami nie.
Właściwie używam @JsonIgnore, aby uniknąć drukowania właściwości, gdy jej nie potrzebuję. Kiedy tego potrzebuję, wyłączam tę właściwość
mapper.getSerializationConfig().disable(SerializationConfig.Feature.USE_ANNOTATIONS);
ale to wyłączy również inne adnotacje, których potrzebuję.
Jak mogę uzyskać wynik, którego potrzebuję? Używasz widoków? Jakiś przykład?
Trochę pojmy, aby zrozumieć, czego chcę:
class User {
private String username;
@JsonIgnore
private String password;
// getter setter
}
writeToDB() {
mapper.getSerializationConfig().disable(SerializationConfig.Feature.USE_ANNOTATIONS);
mapper.writeValueAsString(user);
}
i za pośrednictwem interfejsu API REST możesz uzyskać nazwę użytkownika bez hasła (dzięki JsonIgnore)