Я углубляюсь в аннотации и хочу, чтобы кто-нибудь указал мне в правильном направлении.
Я хочу создать аннотацию, которая сможет обрезать значение String, когда оно отображается из JSON в POJO.
Не знаю, как это сделать.
т.е.
@trim
private String referenceField;




@JacksonAnnotationsInside
@Retention(RUNTIME)
@Target(FIELD)
@JsonDeserialize(using = StringStripDeserializer.class)
public @interface @Strip {}
class StringStripDeserializer extends StdDeserializer<String> {
@Override
public Date deserialize(JsonParser parser, DeserializationContext context)
throws IOException, JsonProcessingException {
String text = parser.getText();
return text != null ? text.strip : null;
}
...
}
Или, если вы хотите обрезать все строки:
@Bean
public Module stringStripModule() {
SimpleModule module = new SimpleModule();
module.addDeserializer(String.class, (JsonParser jsonParser, DeserializationContext deserializationContext) => {
String string = super.deserialize(jsonParser, deserializationContext);
return Objects.nonNull(string) ? string.strip() : null;
});
return module;
}
Я не уверен, что такое @JacksonAnnotation, но @JacksonAnnotationsInside сигнализирует Джексону, что аннотация @Trim сама аннотируется аннотациями Джексона, которые должны соблюдаться везде, где применяется @Trim.
Спасибо за этот ответ, сейчас попробую. Хотите знать, в чем разница между @JacksonAnnotation и @JacksonAnnotationsInside?