我开始使用Moshi编写 Java 库Brockman来解析类似于此示例的 JSON 响应。但是,该格式需要对对象进行一些概括。stream
视频流摘录:
{
"slug": "hd-native",
"display": "Saal 1 FullHD Video",
"type": "video",
"isTranslated": false,
"videoSize": [
1920,
1080
],
"urls": {
"webm": {
"display": "WebM",
"tech": "1920x1080, VP8+Vorbis in WebM, 2.8 MBit/s",
"url": "http://example.com/s1_native_hd.webm"
},
"hls": {
"display": "HLS",
"tech": "1920x1080, h264+AAC im MPEG-TS-Container via HTTP",
"url": "http://example.com/hls/s1_native_hd.m3u8"
}
}
}
音频流摘录:
{
"slug": "audio-native",
"display": "Saal 1 Audio",
"type": "audio",
"isTranslated": false,
"videoSize": null,
"urls": {
"mp3": {
"display": "MP3",
"tech": "MP3-Audio, 96 kBit/s",
"url": "http://example.com/s1_native.mp3"
},
"opus": {
"display": "Opus",
"tech": "Opus-Audio, 64 kBit/s",
"url": "http://example.com/s1_native.opus"
}
}
}
对象的内容会urls = {}
有所不同,具体取决于是否stream
type
存在video
或audio
从上面的示例中可以看到。
目前,只有模型Mp3
,Opus
它们的属性相同。我想用一个Format
类来代替它们,它也可以作为缺失Webm
和Hls
类的替代品。我如何才能将Urls
对象的不同字段实际映射到Format
类中?
public class Format {
public final String display;
public final String tech;
public final String url;
public Format(String display, String tech, String url) {
this.display = display;
this.tech = tech;
this.url = url;
}
}
我可以想象这个Stream
类看起来像这样:
public class Stream {
public final String display;
public final boolean isTranslated;
public final String slug;
public final String type;
public final VideoSize videoSize;
public final List<Format> urls; // How to map into List<Format>?
// ...