2014-10-17 192 views
0

我正在使用Spring 4.1框架开发web服务。当我返回一个Java对象作为响应时,它会自动转换为JSON并传递给客户端,因此我假设JSON解析器位于classpath中,并且配置正确。然而,它未能在请求体从JSON转换为Java对象和客户端获取的400使用Spring MVC解析JSON请求体

这里HTTP响应是Web服务的样子:

这里是请求的样子:

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

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

+0

我不确定,但也许json转换器不拾取包私有属性。尝试在Details类中为它们添加getter和setter,或者将它们定义为public。如果您使用杰克逊,您也可以用'@ JsonProperty'注释它们。 – Vladimir 2014-10-17 14:29:35

+0

添加@JsonProperty现在给出响应代码415. – Aarkan 2014-10-17 14:37:28

回答

1

您在您的Details类中有包私有属性,所以它们可能无法被json转换器识别。

您有几种选择:

  • 将它们定义为公共(不推荐)
  • 提供getter和setter
  • ,如果你使用的是杰克逊,你可以用@JsonProperty注释它们,让它们套餐 - 私人
+0

谢谢。试图让他们公开 - 没有区别。现在添加@JsonProperty会给出响应代码415. – Aarkan 2014-10-17 14:43:06

+0

415可能在序列化响应时弹出 - 您确定请求仍然没有进入方法吗?尝试在方法开始处添加断点或某个控制台输出。 – Vladimir 2014-10-17 14:48:55

+0

是的,我添加了一个断点,但它没有命中。 – Aarkan 2014-10-17 14:49:36

1

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