是否可以使用@RequestParam从JSON转换为域对象

时间:2013-08-16 18:52:04

标签: java spring rest java-ee

我正在从JavaScript脚本(AngularJS)执行多部分请求,我将JSON数据作为第一部分,将可选文件作为第二部分。是否可以将@RequestParam(“data”)自动从JSON转换为我的应用程序中的类?与@RequestParam("data") Dog dog

一样

3 个答案:

答案 0 :(得分:3)

是。在对象(http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-requestbody)之前使用@RequestBody注释:

public void jsonMethod(@RequestBody Dog dog)

注意:您必须让jackson将json转换为自定义对象。杰克逊maven依赖:

<dependency>
   <groupId>org.codehaus.jackson</groupId>
   <artifactId>jackson-mapper-asl</artifactId>
   <version>1.7.1</version>
</dependency>

答案 1 :(得分:2)

像这样定义您的方法签名:

@RequestMapping(value="/jsonRequest")
public @ResponseBody SomeResult jsonHandler(@RequestBody(required=false) Dog dog, 
       @RequestPart(value="part2", required=false) String part2) {
...
}

答案 2 :(得分:0)

是的,你必须使用杰克逊。 对传入参数使用@RequestBody注释。 为codehous.jackson添加依赖项。 并将JsonConverter添加到spring上下文文件

<mvc:annotation-driven>
  <mvc:message-converters>
     <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
   </mvc:message-converters>
</mvc:annotation-driven>

顺便说一下,你可以看看这里的教程。他们使用JSON和spring MVC:sites.google.com/site/upida4j/example