Java 使用spring进行Json体整数验证
我的请求体是这样的Java 使用spring进行Json体整数验证,java,spring-mvc,Java,Spring Mvc,我的请求体是这样的 { "id": 23, "no": 23, "Code": 99, "badgeNumber": 5, "empid": "mm108", "name": "sam", } 我的integer fieldsid,no,代码是可选的,但是当传递空字符串时它应该抛出一个错误,如果不是,我将如何验证它 我不能使用@NotNull,因为它是可选的,它可以为null,但不应接受空字符串或带空格的字符串。StringUtils.isBlankyourString
{
"id": 23,
"no": 23,
"Code": 99,
"badgeNumber": 5,
"empid": "mm108",
"name": "sam",
}
我的integer fieldsid,no,代码是可选的,但是当传递空字符串时它应该抛出一个错误,如果不是,我将如何验证它
我不能使用@NotNull,因为它是可选的,它可以为null,但不应接受空字符串或带空格的字符串。StringUtils.isBlankyourString应该做到这一点。如果在请求正文中使用整数而不是int,则会有句柄null和空字符串。如果要处理空格或任何字符,则需要使用自定义反序列化程序,如下所示:
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
public class IntegerDeserialization extends JsonDeserializer<Integer> {
@Override
public Integer deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
try{
return p.readValuesAs(Integer.class).next();
}catch (Exception ex){
}
return null;
}
}
使用@NotBlank注释,它将检查字符串大小,而不是null
请参阅此在问题中添加您的请求主体类输入代码以帮助我们了解您的案例
public class TestReq implements Serializable{
private static final long serialVersionUID = 1L;
@JsonDeserialize(using = IntegerDeserialization.class)
private Integer id;
@JsonDeserialize(using = IntegerDeserialization.class)
private Integer no;
@JsonDeserialize(using = IntegerDeserialization.class)
private Integer code;
//getter setter
}