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
}