如何在Spring Boot中添加从相关对象的哈希集序列化的JSON数组字段

问题描述 投票:0回答:2

我有2个JHispter生成的彼此相关的实体:CategoryDTO:

public class CategoryDTO implements Serializable {

    private Long id;

    private String name;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
......

MediaDTO:

public class MediaDTO implements Serializable {

private Long id;

private String title;


private Long categoryId;
.....

响应中的当前JSON如下:

    [ {
  "id" : 1,
  "name" : "Table"
}, {
  "id" : 2,
  "name" : "projection Versatile"
}....

如何将Set添加到响应中。用简单的话来说,我想要一个响应JSON,如下所示:

    [ {
      "id" : 1,
      "name" : "Table",
      "media": [{"mediaID":"1","videoPath":"http://video1.mp4"},{"mediaID":"2","videoPath":"http://video5.mp4"},{"mediaID":"3","videoPath":"http://video2.mp4"}]
    }, {
      "id" : 2,
      "name" : "projection Versatile",
"media": [{"mediaID":"45465","videoPath":"http://video3451.mp4"},{"mediaID":"46","videoPath":"http://video445.mp4"},{"mediaID":"47","videoPath":"http://video4562.mp4"}]
    },....

换句话说,如何在响应中添加另一个相关实体作为JSON数组(例如“ media” json数组)?

json spring-boot jhipster
2个回答
1
投票

您可以如下修改CategoryDTO-

...
private Long id;

private String name;

private Set<MediaDTO> meadiaList;
...

0
投票

您可以执行以下操作:

class  CategoryDTO implements Serializable {

    private Long id;
    private String name;
    private Set<MediaDTO> media = new HashSet<>();

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Set<MediaDTO> getMedia() {
        return media;
    }

    public void setMedia(Set<MediaDTO> media) {
        this.media = media;
    }

}

class MediaDTO implements Serializable {

    private int mediaID;
    private String videoPath;

    public int getMediaID() {
        return mediaID;
    }

    public void setMediaID(int mediaID) {
        this.mediaID = mediaID;
    }

    public String getVideoPath() {
        return videoPath;
    }

    public void setVideoPath(String videoPath) {
        this.videoPath = videoPath;
    }

}

然后在您的控制器中返回此对象:

@RestController
class CategoryController {

@GetMapping("/category")
public ResponseEntity<CategoryDTO> getCategory() {

        CategoryDTO categoryDTO = new CategoryDTO();
        categoryDTO.setId(1L);
        categoryDTO.setName("Table");


        //create media1 object;
        MediaDTO media1 = new MediaDTO();
        media1.setMediaID(1);
        media1.setVideoPath("http://video.path.com/1");

        //create media2 object;
        MediaDTO media2 = new MediaDTO();
        media2.setMediaID(2);
        media2.setVideoPath("http://video.path.com/2");

        categoryDTO.getMedia().add(media1);
        categoryDTO.getMedia().add(media2);
        return new ResponseEntity<>(categoryDTO, HttpStatus.OK);

}

}

© www.soinside.com 2019 - 2024. All rights reserved.