使用@JsonProperty时,将JSON转换为模型对象失败

时间:2014-09-25 10:03:05

标签: java json spring-mvc jackson modelattribute

当使用@JsonProperty注释时,JSON转换为模型对象失败,如下所示:

Controller class snippet:

    @RequestMapping( value = "/show", method = RequestMethod.POST)
    public String doControl(@ModelAttribute User user, HttpServletRequest request ){
          return user.getId();
    }

Model class snippet:

    public User{
       @JsonProperty("user_id")
       private id;

       @JsonProperty("user_name")
       private name;

       //getters and setters
    }

当我传递带有{"user_id":1, "user_name":"foo" }请求的{jon POST User字段为null时。 Jsonproperty注释在使用ModelAttribute注释时是否有效?

1 个答案:

答案 0 :(得分:1)

它适用于@RequestBody。使用@RequestBody,您可以向Spring MVC指定带注释的对象位于HTTP请求的正文中。 Spring MVC将尝试使用适当的HTTPMessageConverter解码对象 - 您希望它为json使用消息转换器,因此您的POST请求应包含正确的Content-Type标头(例如Content-Type: application/json)。

如果未指定@RequestBody Spring MVC将尝试使用请求参数填充对象(例如,就像您提交了常规的HTTP POST表单一样)。

因此:

public String doControl(@RequestBody User user, HttpServletRequest request ){...}