如何在jSON数组中的列表中添加名称,使用springboot发布响应

时间:2020-05-11 08:36:56

标签: java json spring-boot arraylist

我正在使用springBoot构建json数据。我想要另一种方式的数据 我得到这个回应

[
    {
        "id": "Spring",
        "name": "Spring FrameWork",
        "description": "Spring Frame work descreption"
    },
    {
        "id": "java",
        "name": "java FrameWork",
        "description": "Java Frame work descreption"
    },
    {
        "id": "javascript",
        "name": "javascript FrameWork",
        "description": "java script Frame work descreption"
    }
]

我想要这样的回复

"topics":[
    {
        "id": "Spring",
        "name": "Spring FrameWork",
        "description": "Spring Frame work descreption"
    },
    {
        "id": "java",
        "name": "java FrameWork",
        "description": "Java Frame work descreption"
    },
    {
        "id": "javascript",
        "name": "javascript FrameWork",
        "description": "java script Frame work descreption"
    }
]

我的春季启动代码是:

@RequestMapping("/topics")
    public List<Topic> getAllTopics() { 
        return topicService.getAllTopics();

    }

我的主题模型:-

public class Topic {

    private String id;
    private String name;
    private String description;

    public Topic() {

    }

    public Topic(String id, String name, String description) {
        super();
        this.id = id;
        this.name = name;
        this.description = description;
    }

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }

}

我需要在代码中添加什么,以便JSON数据应包含该列表的名称。 可以使用JSON数据对象完成此操作。但是还有其他方法吗? 请回答我的问题

3 个答案:

答案 0 :(得分:2)

创建地图并返回

@RequestMapping("/topics")
public Map<String, List<Topic>> getAllTopics() { 
   Map<String, List<Topic>> response = new HashMap<String, List<Topic>>();
   response.put("topics", topicService.getAllTopics());
   return response;
}

答案 1 :(得分:1)

这不是有效的json。

"topics":[
    {
        "id": "Spring",
        "name": "Spring FrameWork",
        "description": "Spring Frame work descreption"
    },
    {
        "id": "java",
        "name": "java FrameWork",
        "description": "Java Frame work descreption"
    },
    {
        "id": "javascript",
        "name": "javascript FrameWork",
        "description": "java script Frame work descreption"
    }
]

根据JSON Docs,json应该以{{1​​}}或{开头。

正确的json是:

[

并在响应中实现这种格式:

  1. 创建一个新的模型类
{
  "topics": [
    {
      "id": "Spring",
      "name": "Spring FrameWork",
      "description": "Spring Frame work descreption"
    },
    {
      "id": "java",
      "name": "java FrameWork",
      "description": "Java Frame work descreption"
    },
    {
      "id": "javascript",
      "name": "javascript FrameWork",
      "description": "java script Frame work descreption"
    }
  ]
}
  1. public class TopicsData { List<Topic> topics; // getters and setters } 对象中设置主题列表
  2. 更改TopicsData或控制器代码以返回topicService对象,而不是TopicsData

答案 2 :(得分:0)

您可以通过将Topics添加到另一个类(例如TopicResponse)来实现。将此作为您的控制器返回类型:

    public class TopicResponse {
         List<Topic> topics;
        //and getter / setter of topics
}