Я прочитал несколько постов в StackOverflow, но пока не нашел решения, подходящего для моей проблемы. Не могли бы вы помочь мне исправить эту ошибку Retrofit?
JSON ответ:
{
"products": [
{
"barcode_number": "8000040000802",
"barcode_type": "EAN",
"barcode_formats": "EAN 8000040000802",
"mpn": "",
"model": "",
"asin": "",
"product_name": "Campari Bitter 25% Vol. 1 L",
"title": "",
"category": "Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Bitters",
"manufacturer": "Campari",
"brand": "Campari",
"label": "",
"author": "",
"publisher": "",
"artist": "",
"actor": "",
"director": "",
"studio": "",
"genre": "",
"audience_rating": "",
"ingredients": "",
"nutrition_facts": "",
"color": "",
"format": "",
"package_quantity": "",
"size": "",
"length": "",
"width": "",
"height": "",
"weight": "",
"release_date": "",
"description": "",
"features": [],
"images": [
"https://images.barcodelookup.com/19631/196313718-1.jpg"
],
"stores": [
{
"store_name": "Rakuten Deutschland GmbH",
"store_price": "16.50",
"product_url": "https://www.rakuten.de/produkt/campari-bitter-25-vol-1-l-1826679605",
"currency_code": "EUR",
"currency_symbol": "€"
}
],
"reviews": []
}
]
}
Классы данных, созданные плагином от JSON до Kotlin:
data class BaseResponse(
val products: List<Product>
)
Продукт:
data class Product(
val actor: String,
val artist: String,
val asin: String,
val audience_rating: String,
...
)
Магазин:
data class Store(
val currency_code: String,
val currency_symbol: String,
val product_url: String,
val store_name: String,
val store_price: String
)
Сервис:
interface BarcodeLookupApiService {
@GET("products")
suspend fun getArticleData(@Query("barcode") barcode: String,
@Query("key") key: String): List<BaseResponse>
}
Модификатор Builder:
object RetrofitBuilder {
private const val BASE_URL = "https://api.barcodelookup.com/v2/"
private fun getRetrofit(): Retrofit {
return Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
val apiService: BarcodeLookupApiService =
getRetrofit().create(BarcodeLookupApiService::class.java)
}
Разве классы данных, созданные плагином, не так? Или мой сервис не должен возвращать список? Я попытался вернуть простой объект BaseResponse, но он тоже не работает.