android - Retrofit 接到电话以获取带有其他模型列表的模型不起作用
问题描述
我在 android 中有一个 Api 调用,它给了我一个 observableList of Frame,但问题是在我的模型中我想要一个其他模型的列表,但这不起作用。有人可以帮我解决我需要怎么做,因为我找不到它。
您可以在下面找到邮递员的获取方式
[
{
"FrameId": 4,
"DurationFrame": 0,
"PointsWinner": 0,
"PointsOpponent": 0,
"Winner": "",
"MatchId": 58,
"Breaks": [
{
"BreakId": 2,
"Player": "Dennis",
"MomentPlayed": "2018-12-30T13:05:08.223",
"NumberPoints": 30,
"Opponent": "Danny",
"TypeBreak": "Match",
"FrameId": 4
}
]
},
{
"FrameId": 5,
"DurationFrame": 0,
"PointsWinner": 0,
"PointsOpponent": 0,
"Winner": "",
"MatchId": 58,
"Breaks": []
}
]
您可以在下面找到框架的模型类
class Frame:Serializable {
@field:Json(name = "FrameId")
var frameId: Int = 0
@field:Json(name = "DurationFrame")
var durationFrame: Double = 0.0
@field:Json(name = "PointsWinner")
var pointsWinner: Int = 0
@field:Json(name = "PointsOpponent")
var pointsOpponent: Int = 0
@field:Json(name = "Winner")
var winner: String = ""
@field:Json(name = "MatchId")
var matchId: Int? = 0
var breaks: List<Breaks> = null
constructor() {}
constructor(frameId: Int, durationFrame: Double, pointsWinner: Int, pointsOpponent: Int, winner: String, matchId: Int) {
this.frameId = frameId
this.durationFrame = durationFrame
this.pointsWinner = pointsWinner
this.pointsOpponent = pointsOpponent
this.winner = winner
this.matchId = matchId
}
}
您可以在下面找到 api 调用
@GET("api/Frames/matchid/{matchid}")
fun getFramesForMatchId(@Path("matchid") matchid : Int): Observable<List<Frame>>
我所做的调用是获取特定匹配的所有帧
解决方案
因为您的字段名称“breaks”与 json 参数名称“Breaks”不匹配,所以您必须添加适当的注释:
...
@field:Json(name = "Breaks")
var breaks: List<Breaks> = null
...
推荐阅读
- api - Azure 应用无法连接到外部 API - Https to Http
- android - infinix m8无法激活开发者模式
- html - CSS过渡效果向上高度不起作用
- java - Dockerized Spring Boot 不能在 Raspberry Hyperiot OS + Gitlab CI + Spring Boot 上运行
- javascript - 改变焦点上反应本机文本输入的状态
- python - 访问 Heron 中的本地文件夹
- amazon-s3 - AWS 限制对 s3 中子文件夹的访问
- java - 绑定结果不起作用弹簧启动
- html - 不需要的列布局 HTML/CSS
- javascript - VueJS for 循环创建组件,组件好像是连在一起的