@Pattern
- довольно мощная аннотация, которая хорошо подойдет для проверок, если у вас есть опыт работы с регулярными выражениями.
Например,
@Pattern(regexp="^[0-9]{3}-[0-9]{3}-[0-9]{4}$")
private String phoneNumber;
Недостатком является то, что этоработает только для строк, хотя.
Если вас интересует больше конверсий, чем проверок, вы можете обратиться к @JsonDeserialize
, если используете Джексона.
Например:
@JsonDeserialize(using=PhoneNumberDeserializer.class)
private String phoneNumber;
Pattern phonePattern = Pattern.compile("^[0-9]{3}(.+)[0-9]{3}(.+)[0-9]{4}$");
public class PhoneNumberDeserializer extends JsonDeserializer<String> {
@Override
public String deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext)
throws IOException, JsonProcessingException {
String phone = jsonParser.getText();
if (matcher.matches(phone)) {
Matcher matcher = phonePattern.matcher(phone);
for (int i = 1; i < matcher.groupCount(); i++) {
marcher.group(i).replaceAll(".*", "");
}
}
}
}
Это будет работать для любого типа, а не только для струн.
Извините, это немного запутанно, я получал удовольствие, переучивая себя.