如何在Spring引导中添加从相关对象的hashset序列化的JSON数组字段



我有两个JHisper生成的相互关联的实体:
类别DTO:

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

媒体DTO:

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数组(?

您可以如下修改类别DTO-

...
private Long id;
private String name;
private Set<MediaDTO> meadiaList;
...

您可以这样做:

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

}

最新更新