Java springmvc&;hibernate验证程序:有效的json

Java springmvc&;hibernate验证程序:有效的json,java,validation,spring-mvc,hibernate-validator,Java,Validation,Spring Mvc,Hibernate Validator,我想检查我的输入参数是否是有效的json。它可以是任何东西:映射、字符串、数字等等。是否有一些现成的hibernate验证器用于此 更清楚地说,我正在寻找类似的东西,例如,@Email。是否有类似于@Json的注释?没有类似的Json验证器,但您可以连接自定义验证器 public class Customer { @Size(min=2, max=30) private String name; @NotEmpty @Email private String

我想检查我的输入参数是否是有效的json。它可以是任何东西:映射、字符串、数字等等。是否有一些现成的hibernate验证器用于此


更清楚地说,我正在寻找类似的东西,例如,
@Email
。是否有类似于
@Json
的注释?

没有类似的Json验证器,但您可以连接自定义验证器

public class Customer {

    @Size(min=2, max=30) 
    private String name;

    @NotEmpty @Email
    private String email;

    @JsonValid
    private String  json;

}

@Documented
@Constraint(validatedBy = JsonValidator.class)
@Target( { ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface JsonValid {


    String message() default "{JsonValid}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

}

public class JsonValidator implements ConstraintValidator < JsonValid, String > {

 @Override
 public void initialize(JsonValid value) {}

 @Override
 public boolean isValid(String json, ConstraintValidatorContext ctx) {

  ObjectMapper mapper = new ObjectMapper();
  ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
  Validator validator = factory.getValidator();

  //validate with your request object
  SimpleFooRequest request = mapper.readValue(
   json, SimpleFooRequest.class);
  Set < ConstraintViolation < SimpleFooRequest >> violations = validator.validate(request);

  return  violations.size() > 0;
 }

}    
公共类客户{
@尺寸(最小值=2,最大值=30)
私有字符串名称;
@NotEmpty@Email
私人字符串电子邮件;
@JsonValid
私有字符串json;
}
@记录
@约束(validatedBy=JsonValidator.class)
@目标({ElementType.METHOD,ElementType.FIELD})
@保留(RetentionPolicy.RUNTIME)
public@interface JsonValid{
字符串消息()默认值“{JsonValid}”;
类[]组()默认值{};

类你的问题与其他问题有什么不同?jannis这些问题与
spring mvc
hibernate validation
无关。我误解了这个问题。我的错。它不应该是
返回违规。size()==0;
?而且不会
mapper.readValue吗(json,simpleforequest.class);
在无效的json上抛出异常?我想尝试捕捉这一行并将其用作json有效性的指示就足够了。