У меня есть класс, который украшен аннотацией. Я не хочу сериализовать это при преобразовании с использованием метода convert в ObjectMapper
классе, он работает с классами, а не с аннотациями.
Ниже приведен пример код с тестовым примером
public class IgnoreFeatureIDTest
{
@JsonIgnoreType
private class MyMixInForIgnoreType {}
@JsonIgnoreType
private interface MyMixInForIgnoreInterface {}
@Test
public void testFeatureIDIgnore()
{
ObjectMapper mapper = new ObjectMapper();
//mapper.addMixIn(FeatureID.class, MyMixInForIgnoreType.class);
mapper.addMixIn(FeatureID.class, MyMixInForIgnoreInterface.class);
TestClass t = new TestClass();
t.setId(3L);
t.setName("Hello");
Map<String, Object> map = mapper.convertValue(t, new TypeReference<Map<String, Object>>() {});
Assertions.assertNull(map.get("id"));
}
private static class TestClass
{
@FeatureID
// @JsonIgnore
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
Но проблема также заключается в сериализации поля с аннотацией FeatureID
. Хотя у меня нет контроля над аннотацией, которую я хочу пропустить, но для целей тестирования я использую ниже интерфейс
@Target(ElementType.FIELD )
@Retention(RetentionPolicy.RUNTIME)
public @interface FeatureID {
}