如何使用 Spring Boot 返回一组对象?

新手上路,请多包涵

我上了一堂关于 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 许可协议

阅读 459
2 个回答

如果将原始方法与新方法(带有 List )进行比较,您会发现一些差异。

首先,在 @RequestMapping 注释中,您现在正在使用属性 consumesproducesproduces 在这里不是问题,因为您生成的响应应该是 JSON。 但是 你没有消耗任何东西,所以你应该离开 consumes

 @RequestMapping(value = "/greeting", method = RequestMethod.GET, 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;
}

作为旁注,您可能还会注意到您使用了 @ResponseBody 注释。把它放在这里不会导致任何错误,但没有必要,因为如果你正确地遵循了 Spring 教程,你应该用 @RestController 注释你的控制器,并且通过这样做,你已经告诉 Spring 它将使用响应主体。

原文由 g00glen00b 发布,翻译遵循 CC BY-SA 4.0 许可协议

假设我们有 CarDetails Pojo 列表,我们想将它们归还

@RestController
public class CarDetailController {
  @GetMapping("/viewAllCarDetailList")
    public List<CarDetail> retrieveAllCarDetails() {
        List<CarDetail> contacts = new ArrayList<CarDetail>();

        CarDetail objt = new CarDetail();
        objt.setCarModel("hyundai");
        objt.setSubModel("I10");
        CarDetail objt2 = new CarDetail();
        objt2.setCarModel("hyundai");
        objt2.setSubModel("I20");
        contacts.add(objt);
        contacts.add(objt2);
        return contacts;
    }
}
    public class CarDetails {

            private String carModel;
            private String subModel;
// Will haave Setter getter and hash code equls method
//and constructor
    }

将输出此 JSON:-

 [
    {
        "carModel": "hyundai",
        "subModel": "I10"
    },
    {
        "carModel": "hyundai",
        "subModel": "I20"
    }
]

在 Postman 中输出

原文由 Vipul Gulhane 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题