Trips.json
ネストされたJSONとレトロフィットflatMap
{
"trips":[
{
"summary": {
"subTrips":3,
"changes":1,
"duration":"1:09",
"departure":{
"date":"2017-05-07",
"time":"11:46",
},
"arrival":{
"date":"2017-05-07",
"time":"12:55",
},
},
"subTrips":[
{
"departure":{
"date":"2017-05-07",
"time":"11:46",
},
"arrival":{
"date":"2017-05-07",
"time":"12:07",
},
"intermediateStopsKey":"c474e7c"
},
{
"departure":{},
"arrival":{},
"intermediateStopsKey":"c81e728"
}
]
},
{
"summary": {},
"subTrips": [
{ "intermediateStopsKey": "123456" }
]
}
]
}
IntermediateStops.json
{
"status": 1,
"data": [
{
"stationName": "Husby",
"arrivalTime": "19:59",
"departureTime": "19:59",
},
{
"stationName": "Kista",
"arrivalTime": "20:01",
"departureTime": "20:01"
},
{
"stationName": "Hallonbergen",
"arrivalTime": "20:05",
"departureTime": "20:05"
}
]
}
私の最初のAPIコールはTrips.json
を返します。 subTrips
に複数のフィールドが含まれています。各intermediateStopsKey
は、Trips.json
に注入する必要があるIntermediateStops.json
を取得するための新しいAPI呼び出しです。 flatMap()
はそれを行う方法と思われますが、私は望む結果を得るためにコマンドを連鎖させる方法を助ける必要があります。
API().getTrips(params)
.observeOn(AndroidSchedulers.mainThread())
.doOnRequest((Long request) -> dummyView.setVisibility(View.VISIBLE))
.doOnCompleted(() -> createListView())
.doOnNext(response -> getTrips(response.body().getData()))
.flatMap(getTripsModel -> Observable.from(getTripsModel.body().getData().getTrips()))
.flatMap(tripsModel -> Observable.from(tripsModel.getSubTrips()))
/********
** at some point here I need to insert the
** IntermediateStops into the SubTripsModel
*********/
.flatMap(subTripsModel ->
API().getIntermediateStops(
subTripsModel.getIntermediateStops(),
Token.getInstance().TOKEN))
.doOnCompleted(() -> dummyView.setVisibility(View.GONE))
.subscribe(intermediateResponse -> {
}, throwable -> {
Log.i("REST ERROR", RestErrorHelper.getErrorMessage(throwable, mContext));
});
要求が適切にチェーンされている、私は私のgetIntermediateStopsのAPIの結果を挿入する方法についてはわからないよ。この作品