如何编写处理字段的自定义注解
How to write custom annotation that processes a field
我正在研究注释,希望有人能给我指出正确的方向。
我想创建一个注解,当字符串值从 JSON 映射到 POJO 时,它能够 trim 字符串值。
不知道该怎么做。
即
@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;
}
...
}
或者,如果您想要 trim 所有 字符串:
@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;
}
我正在研究注释,希望有人能给我指出正确的方向。
我想创建一个注解,当字符串值从 JSON 映射到 POJO 时,它能够 trim 字符串值。
不知道该怎么做。
即
@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;
}
...
}
或者,如果您想要 trim 所有 字符串:
@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;
}