Json 注释验证

Json 注释验证,json,spring,validation,annotations,Json,Spring,Validation,Annotations,好的,首先,如果我使用的是@valid,并且传入的是user实例而不是json字符串,那么我可以对用户进行验证。这很好,例如: @RequestMapping(value = "/add", method = RequestMethod.POST) public String addUser(@Valid @ModelAttribute("user") User user, BindingResult result) { userRep.save(user); return "r

好的,首先,如果我使用的是
@valid
,并且传入的是
user
实例而不是json字符串,那么我可以对用户进行验证。这很好,例如:

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addUser(@Valid @ModelAttribute("user") User user, BindingResult result) {
    userRep.save(user);
    return "redirect:/";
}
所以问题是如何创建某种API,传入的是Json字符串,并自动验证注释,例如,
@Email
@NotEmpty
?最佳做法是什么

@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<String> createFromJson(@RequestBody String json) {    
  User user = User.fromJsonToUser(json);
  return new ResponseEntity<String>(user.toJson(),header,HttpStatus.CREATED);
}

只需让Spring将字符串解析给用户,并使用相同的@Valid注释对其进行注释:

@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<String> createFromJson(@RequestBody @Valid User user) {    
    return new ResponseEntity<String>(user.toJson(), header, HttpStatus.CREATED);
}
@RequestMapping(method=RequestMethod.POST,headers=“Accept=application/json”)
公共响应属性createFromJson(@RequestBody@Valid User){
返回新的ResponseEntity(user.toJson(),header,HttpStatus.CREATED);
}
甚至

@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<User> createFromJson(@RequestBody @Valid User user) {    
    return new ResponseEntity<User>(user, header, HttpStatus.CREATED);
}
@RequestMapping(method=RequestMethod.POST,headers=“Accept=application/json”)
公共响应属性createFromJson(@RequestBody@Valid User){
返回新的ResponseEntity(用户、标题、HttpStatus.CREATED);
}

您还可以使用
@Valid
@RequestBody
注释的参数进行注释。
@Valid
json字符串?(
@RequestBody
@Valid
String json)但我希望验证用户对象,但如何验证?spring将不只是将json字符串解析为用户对象,我需要做什么才能让它工作呢?我不确定我遗漏了什么。我收到了错误-服务器拒绝了此请求,因为请求实体的格式不受请求方法()的请求资源的支持。您必须在类路径中具有Jackson JSON映射器。请参阅本文档中的和grep“Jackson”。是否有任何示例?我发现的只是返回Json而不是接收?看起来我错过了一些简单的东西,但我不能用谷歌搜索它!任何配置的工作示例都将不胜感激
@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<User> createFromJson(@RequestBody @Valid User user) {    
    return new ResponseEntity<User>(user, header, HttpStatus.CREATED);
}