使用Spring MVC解析JSON请求体

时间:2014-10-17 14:22:49

标签: spring spring-mvc

我正在使用Spring 4.1框架来开发webservices。当我返回一个Java对象作为响应时,它会自动转换为JSON并传递给客户端,所以我假设JSON解析器在classpath中并且配置正确。但是,它无法将请求体从JSON转换为Java对象,并且客户端获得的响应为400。

以下是webservice的外观:

public class Details{
        public Details(){

        }
        int code;
        int area;
    }

@RequestMapping(value = "/api/update/{phoneNumber}", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> update(@PathVariable final String phoneNumber, @RequestBody Details details)

以下是请求的外观:

Method: Post
Content-Type: application/json; charset=utf-8
Body: {"code":0,"area":12}

如果我将请求主体收集为字符串并手动解析它然后它工作,所以它获得有效的JSON但由于某种原因它不会自动解析它。我不知道如何解决它。请帮忙。提前致谢。

2 个答案:

答案 0 :(得分:1)

您的Details类中包含私有属性,因此json-converter可能无法识别它们。

您有几种选择:

  • 将它们定义为公开(不推荐)
  • 提供getter和setter
  • 如果您使用的是jackson,则可以使用@JsonProperty对其进行注释,然后将其保留为私有

答案 1 :(得分:1)

最后我得到了这个原因。我正在使用不是静态的内部类。使这些静态修复问题。