繁体   English   中英

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

[英]How to add name to List in jSON Array, posting response using springboot

我正在使用 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"
    }
]

我的 spring 启动代码是:

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

    }

我的主题 model:-

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 数据 object 来完成。 但是有没有别的办法? 请回答我的问题

创建一个 Map 并返回

@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;
}

这不是有效的 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 应以{[开头。

正确的 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"
    }
  ]
}

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

  1. 新建 model class
public class TopicsData {
    List<Topic> topics;
    // getters and setters
}
  1. TopicsData object 中设置主题列表
  2. 更改topicService或 controller 代码以返回TopicsData object 而不是List<Topic>

您可以通过将您的主题添加到另一个 class 来实现,例如:TopicResponse。 将此作为您的 controller 返回类型:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM