无法在Spring MVC REST中看到JSON转换错误

Raj*_*dra 7 spring-mvc jackson

我正在做AngularJS和Spring REST应用程序.这是我的代码.

  @RestController
  @RequestMapping("/user")
  // @Secured("ROLE_ADMIN")
  public class UserController
  {
    @RequestMapping(value = "/verifyUser", method = RequestMethod.POST)
    public Boolean verifyUser(@RequestBody User user)
    {
    }
  } 
Run Code Online (Sandbox Code Playgroud)

如果 user对象格式不正确,则浏览器 400 (Bad Request) 显示Eclipse控制台中没有显示其他错误.我只是想知道如果user对象的格式不正确,反序列化中会出现什么确切的错误 .

Dar*_*ari 9

如果您不想使用自定义objectMapper,或者您不想将其String用作方法输入,则可以使用spring ExceptionHandler.只需将以下方法添加到控制器中,然后您就可以在控制台中看到jackson数据绑定错误.

@ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseStatus(value=HttpStatus.BAD_REQUEST, reason="There was an error processing the request body.")
public void handleMessageNotReadableException(HttpServletRequest request, HttpMessageNotReadableException exception) {
    System.out.println("\nUnable to bind post data sent to: " + request.getRequestURI() + "\nCaught Exception:\n" + exception.getMessage());
}
Run Code Online (Sandbox Code Playgroud)

spring documentation: Spring MVC中的语句处理

如果你想忽略一些无用的jackson异常,你可以在springframework中使用你自己的jackson ObjectMapper.看到这个答案.


RE3*_*350 6

转换您的方法如下.使用ObjectMapper将JSON转换为对象,因此在转换它时会抛出异常,您将能够识别问题.

@RequestMapping(value = "/verifyUser", method = RequestMethod.POST)
    public Boolean verifyUser(@RequestBody String json)
    {  
       try{
           ObjectMapper om = new ObjectMapper();
           User user = om.readValue(json, User.class);
          } 
          catch(Exception e){
            e.printStackTrace()
          }
         // Write your logic.....
        return ....;       

    }
Run Code Online (Sandbox Code Playgroud)