在我的应用程序中,我使用Retrofit从API获取数据(包括航班数据).我想从JSON获得List< Itinerary >,但问题是它的格式很差,我正在单独获得行程.我听说Moshi图书馆可以做到这一点,但我不知道怎么做.
data class ItineraryData(
val itinerary_0: Itinerary0,
val itinerary_1: Itinerary0,
val itinerary_2: Itinerary0,
val itinerary_3: Itinerary0,
val itinerary_4: Itinerary0,
val itinerary_5: Itinerary0,
val itinerary_6: Itinerary0,
val itinerary_7: Itinerary0,
val itinerary_8: Itinerary0,
val itinerary_9: Itinerary0,
)
WHAT I WANT:个
data class ItineraryData(
val itineraries: List<Itinerary0>
)
JSON FRAGMENT个
"itinerary_data" : {
"itinerary_0": {...},
"itinerary_1": {...},
"itinerary_2": {...},
"itinerary_3": {...},
"itinerary_4": {...},
"itinerary_5": {...},
"itinerary_6": {...},
"itinerary_7": {...},
"itinerary_8": {...},
"itinerary_9": {...},
}"
Retrofit App Api:个
@Provides
@Singleton
fun provideFlightApi(): FlightApi {
val loggingInterceptor = HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY
}
val client = OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.build()
return Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
.create(FlightApi::class.java)
}
getFlights function:个
@GET(value = "v2/flight/departures")
suspend fun getFlights(
@Query("rapidapi-key") apiKey: String = BuildConfig.API_KEY,
@Query("departure_date") date: String,
@Query("adults") passengers: Int,
@Query("sid") sid: String = "SIFjfID63",
@Query("origin_city_id") cityDep: String,
@Query("destination_city_id") cityArr: String,
@Query("number_of_itineraries") itinerariesCount: Int = 1
) : ApiResponse2