我上了一堂关于 Spring Boot
的课,效果很好。但是,如果我想返回一组对象怎么办?我试过这样 做, 但没有用。我怎样才能正确地做到这一点?
对于一个对象(有效):
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue = "World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
对于许多对象(它不起作用):
@RequestMapping(value = "/greeting", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody List<Greeting> greeting() {
Greeting greeting1 = new Greeting(1, "One");
Greeting greeting2 = new Greeting(2, "Two");
List<Greeting> list = new ArrayList<>();
list.add(greeting1);
list.add(greeting2);
return list;
}
原文由 faoxis 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果将原始方法与新方法(带有
List
)进行比较,您会发现一些差异。首先,在
@RequestMapping
注释中,您现在正在使用属性consumes
和produces
。produces
在这里不是问题,因为您生成的响应应该是 JSON。 但是 你没有消耗任何东西,所以你应该离开consumes
。作为旁注,您可能还会注意到您使用了
@ResponseBody
注释。把它放在这里不会导致任何错误,但没有必要,因为如果你正确地遵循了 Spring 教程,你应该用@RestController
注释你的控制器,并且通过这样做,你已经告诉 Spring 它将使用响应主体。