首页 > 解决方案 > 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>>

我所做的调用是获取特定匹配的所有帧

标签: androidapiandroid-studioretrofit

解决方案


因为您的字段名称“breaks”与 json 参数名称“Breaks”不匹配,所以您必须添加适当的注释:

...
@field:Json(name = "Breaks")
var breaks: List<Breaks> = null
...

推荐阅读