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

Java 如何使用Spring Boot返回一组对象?,java,spring,spring-boot,Java,Spring,Spring Boot,我做了springboot,效果非常好。但是如果我想返回一组对象呢?我试过了,但没用。我怎样才能正确地做呢 使用一个对象(有效): 有很多对象(不起作用): @RequestMapping(value=“/greeting”,method=RequestMethod.GET,consumes=MediaType.APPLICATION\u JSON\u value,products=MediaType.APPLICATION\u JSON\u value) public@ResponseBody

我做了
springboot
,效果非常好。但是如果我想返回一组对象呢?我试过了,但没用。我怎样才能正确地做呢

使用一个对象(有效):

有很多对象(不起作用):

@RequestMapping(value=“/greeting”,method=RequestMethod.GET,consumes=MediaType.APPLICATION\u JSON\u value,products=MediaType.APPLICATION\u JSON\u value)
public@ResponseBody列表问候语(){
问候语1=新问候语(1,“一”);
问候语2=新问候语(2,“两”);
列表=新的ArrayList();
列表。添加(问候1);
列表。添加(问候2);
退货清单;
}

以下是我为此编写的代码片段。从@RequestMapping注释中删除“consume”,因为您在方法中没有使用它

@RestController
public class GreetingsController
{
    @RequestMapping(value = "greetings", 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;
    }

    public class Greeting
    {
        private String message;
        private int count;

        public Greeting(int count, String message)
        {
            this.count = count;
            this.message = message;
        }

        public String getMessage()
        {
            return message;
        }

        public void setMessage(String message)
        {
            this.message = message;
        }
    }
}
@RestController
公共类迎宾控制器
{
@RequestMapping(value=“问候”,method=RequestMethod.GET,products=MediaType.APPLICATION\u JSON\u value)
公共@ResponseBody
列表问候语(){
问候语1=新问候语(1,“一”);
问候语2=新问候语(2,“两”);
列表=新的ArrayList();
列表。添加(问候1);
列表。添加(问候2);
退货清单;
}
公开课问候语
{
私有字符串消息;
私人整数计数;
公共问候语(整数计数、字符串消息)
{
this.count=计数;
this.message=消息;
}
公共字符串getMessage()
{
返回消息;
}
公共无效设置消息(字符串消息)
{
this.message=消息;
}
}
}

如果您将原始方法与新方法(带有
列表)进行比较,您会注意到一些差异

首先,在
@RequestMapping
注释中,您现在使用的属性是
消耗
产生
<代码>生成
在这里不是问题,因为您生成的响应应该是JSON但是您没有消费任何东西,因此您应该将消费的内容放在一边

@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;
}
@RequestMapping(value=“/greeting”,method=RequestMethod.GET,products=MediaType.APPLICATION\u JSON\u value)
public@ResponseBody列表问候语(){
问候语1=新问候语(1,“一”);
问候语2=新问候语(2,“两”);
列表=新的ArrayList();
列表。添加(问候1);
列表。添加(问候2);
退货清单;
}

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

假设我们有一个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
    }

请注意:Jackson还添加了一个XML序列化。一旦你把它放在类路径上,它就不再那么确定Spring默认生成什么,我已经看到端点因为它而从JSON转换到XML序列化。最好是指定products属性。如果我们想向arryas添加一个字段值,该怎么办?(类似于{“carModels”:[{objec1},{object2}]}。有没有办法不创建一个单独的对象就可以做到这一点?您是否希望得到这样的响应:-{“carModels”:[{I10},{I20},{Inovoa}},请确认一下?
@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;
}
@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
    }
[
    {
        "carModel": "hyundai",
        "subModel": "I10"
    },
    {
        "carModel": "hyundai",
        "subModel": "I20"
    }
]