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