我收到一个JSON编码的字符串,然后将其解码为POJO,就像这样:
我需要验证三件事情:
至于第二个问题,如果输入的值与枚举值不匹配,则会引发一个
String json = ...
final ObjectMapper mapper = new ObjectMapper();
MyPojo obj = mapper.readValue(json, MyPojo.class);
我希望能够验证这个输入,但我不确定做法是否正确。
假设 MyPojo 的定义如下:
@JsonIgnoreProperties(ignoreUnknown=true)
class MyPojo {
public static enum Type {
One,
Two,
Three;
@JsonValue
public String value() {
return this.name().toLowerCase();
}
}
private String id;
private Type type;
private String name;
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public Type getType() {
return this.type;
}
public void setType(Type type) {
this.type = type;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
我需要验证三件事情:
- 所有成员都有值;
- 枚举值在枚举中;
- 测试某些或所有值是否符合某些标准(例如:最小或最大长度、最小或最大数值、正则表达式等)。
至于第二个问题,如果输入的值与枚举值不匹配,则会引发一个
JsonMappingException
异常,因此我设法解决了这个问题。try {
MyPojo obj = mapper.readValue(json, MyPojo.class);
}
catch (JsonMappingException e) {
return "invalid value for property: " + e.getPath().get(0).getFieldName();
}
但是我该如何获取输入框中的值,以便返回:无效值:VALUE 用于属性:PROPERTY
?
谢谢。