Spring MVC: Doesn't deserialize JSON request body

前端 未结 6 1431
忘掉有多难
忘掉有多难 2020-12-02 09:28

I\'m working on a Spring MVC project and one of the tasks I need to do requires me to have a string of JSON data sent through by the user in a POST request. I know that Spri

6条回答
  •  猫巷女王i
    2020-12-02 10:06

    You will usually see this type of error when Spring MVC finds a request mapping that matches the URL path but the parameters (or headers or something) don't match what the handler method is expecting.

    If you use the @RequestBody annotation then I believe Spring MVC is expecting to map the entire body of the POST request to an Object. I'm guessing your body is not simply a String, but some full JSON object.

    If you have a java model of the JSON object you are expecting then you could replace the String parameter with that in your doSomething declaration, such as

    public void doSomething(@RequestBody MyObject myobj) {

    If you don't have a Java object that matches the JSON then you could try to get it working by replacing the String type with a Map and see if that gets you closer to a working solution.

    You could also turn on debug logging in Spring MVC to get more information on why it was a bad request.

    Edit: Given your requirements in the comments, you could simply inject the HttpServletRequest into your method and read the body yourself.

    public void doSomething(HttpServletRequest request) {
      String jsonBody = IOUtils.toString( request.getInputStream());
      // do stuff
    }
    

提交回复
热议问题