返回JSON的Spring restful web服务

时间:2014-02-13 13:08:36

标签: java json spring rest

我刚刚在Spring.io http://spring.io/guides/gs/rest-service/上完成了教程并创建了一个简单的休息服务。但是,有人知道如何以JSON格式返回多个对象吗?例如,如果我有一个带有姓名和身份证的人员类,我怎样才能将三个人添加到/人?

2 个答案:

答案 0 :(得分:7)

您可以使用@ResponseBody注释,只需返回您想要的任何内容,只要这些对象可以被jsonized。

例如,您可以拥有这样的bean:

@Data
public class SomePojo {
   private String someProp;
   private List<String> someListOfProps;
}

然后在你的控制器中你可以:

@ResponseBody
@RequestMapping("/someRequestMapping")
public List<SomePojo> getSomePojos(){
  return Arrays.<String>asList(new SomePojo("someProp", Arrays.<String>asList("prop1", "prop2"));
}

并且默认情况下Spring会使用它的Jackson映射器来执行此操作,因此您会收到如下响应:

[{"someProp":"someProp", "someListOfProps": ["prop1", "prop2"]}]

同样,你可以绑定到一些对象,但这一次,使用@RequestBody注释,这次将使用jackson为你预转换json。

你可以做的是

@RequestMapping("/someOtherRequestMapping")
public void doStuff(@RequestBody List<SomePojo> somePojos) {
   //do stuff with the pojos
}

答案 1 :(得分:1)

尝试从方法中返回一个列表:

@RequestMapping("/greetings")
public @ResponseBody List<Greeting> greetings(
        @RequestParam(value="name", required=false, defaultValue="World") String name) {
    return Arrays.asList(new Greeting(counter.incrementAndGet(),String.format(template, name)));
}