Jeśli wyłączysz automatyczne wykrywanie, powinno ono tylko serializować właściwości, które masz przypisane - niezależnie od tego, czy są to same właściwości, czy też pobierające. Oto prosty przykład:
private ObjectMapper om;
@Before
public void setUp() throws Exception {
om = new ObjectMapper();
// disable auto detection
om.disable(MapperFeature.AUTO_DETECT_CREATORS,
MapperFeature.AUTO_DETECT_FIELDS,
MapperFeature.AUTO_DETECT_GETTERS,
MapperFeature.AUTO_DETECT_IS_GETTERS);
// if you want to prevent an exception when classes have no annotated properties
om.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
}
@Test
public void test() throws Exception {
BlahClass blahClass = new BlahClass(5, "email", true);
String s = om.writeValueAsString(blahClass);
System.out.println(s);
}
public static class BlahClass {
@JsonProperty("id")
public Integer id;
@JsonProperty("email")
public String email;
public boolean isThing;
public BlahClass(Integer id, String email, boolean thing) {
this.id = id;
this.email = email;
isThing = thing;
}
}
Co można łatwo zrobić, to ** Nie ** szeregować według właściwości adnotacji używając '@ JsonIgnore'. – Mena
@Mena Nie jest wcale dobra - zmusza mnie to do opisywania klas bazowych. Nie chcę tego robić. –
"Zmusza mnie to do adnotowania klas bazowych" -> Nie widzę, jak to się stało. Adnotujesz swoje właściwości, aby je ignorować i skończysz, twój obiekt serializuje ze wszystkimi rekwizytami, z wyjątkiem tych, które są ignorowane. – Mena