Java Jersey API返回带有不带子类属性的对象的ArrayList
在API中,我必须返回对象(Java Jersey API返回带有不带子类属性的对象的ArrayList,java,json,arraylist,subclass,Java,Json,Arraylist,Subclass,在API中,我必须返回对象(播放列表),其中包含一个带有对象(曲目)的ArrayList Playlist.java import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.util.ArrayList; import java.util.Arrays; @XmlRootElement public class Playlist {
播放列表
),其中包含一个带有对象(曲目
)的ArrayList
Playlist.java
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
import java.util.Arrays;
@XmlRootElement
public class Playlist {
private String owner;
private String name;
private ArrayList<Track> tracks;
public Playlist() {
this.tracks = new ArrayList<Track>();
}
public Playlist(String owner, String name, Track[] tracks) {
this.owner = owner;
this.name = name;
this.tracks = new ArrayList<Track>(Arrays.asList(tracks));
}
public void addTrack(Track track) {
this.tracks.add(track);
}
@XmlElement(name = "tracks")
public ArrayList<Track> getTracks() {
return this.tracks;
}
public void changeName(String name) {
this.name = name;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Song.java
public class Song extends Track {
private String album;
public Song(String performer, String title, String url, long duration, String album) {
super(performer, title, url, duration);
this.album = album;
}
public String getAlbum() {
return album;
}
public void setAlbum(String album) {
this.album = album;
}
}
Video.java
public class Video extends Track {
private int playCount;
private Calendar publicationDate;
private String description;
public Video(String performer, String title, String url, long duration, int playCount, Calendar publicationDate, String description) {
super(performer, title, url, duration);
this.playCount = playCount;
this.publicationDate = publicationDate;
this.description = description;
}
public int getPlayCount() {
return playCount;
}
public String getPlayCountThousandsSeperator() {
return String.format(Locale.US, "%,d", this.playCount).replace(',', '.');
}
public void setPlayCount(int playCount) {
this.playCount = playCount;
}
public Calendar getPublicationDate() {
return publicationDate;
}
public void setPublicationDate(Calendar publicationDate) {
this.publicationDate = publicationDate;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
Track.java
@XmlRootElement
public class Track {
private String performer;
private String title;
private String url;
private long duration;
public Track() {
}
public Track(String performer, String title, String url, long duration) {
this.performer = performer;
this.title = title;
this.url = url;
this.duration = duration;
}
public String getPerformer() {
return performer;
}
public void setPerformer(String performer) {
this.performer = performer;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public long getDuration() {
return duration;
}
public void setDuration(long duration) {
this.duration = duration;
}
public String getParsedDuration() {
return this.getDuration() / 60 + ":" + this.getDuration() % 60;
}
}
经过几个小时的研究,我发现它也适用于这个问题 现在从
@XmlRootElement
@XmlSeeAlso({Song.class,Video.class}) //This fixed it
public class Playlist { ... } // Omitting unchanged code
嗨,你能分享你的歌曲/视频课吗?看起来怎么样?从代码上看,您在构造函数中传递所需的内容是正确的,但仍然。。。如果可以的话!问题更新,增加歌曲、视频和曲目课程
@XmlRootElement
@XmlSeeAlso({Song.class,Video.class}) //This fixed it
public class Playlist { ... } // Omitting unchanged code