当前位置: 首页 > 知识库问答 >
问题:

Kotlin改装错误“应为BEGIN_ARRAY但为begin_object”

戎劲
2023-03-14
{
"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": []
    }
]
}
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>
}

改装建造者:

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对象,但这也不起作用。

共有1个答案

邓深
2023-03-14

按如下所示更改界面:

interface BarcodeLookupApiService {
    @GET("products")
    suspend fun getArticleData(@Query("barcode") barcode: String,
                               @Query("key") key: String): BaseResponse
}

要获取产品列表,请执行以下操作:

baseRespose.ProductsList

这会解决你的问题。响应是在object内部有一个数组的对象。因此你会得到错误。

 类似资料:
  • 我如何使用改造来解析这个?我得到错误BEGIN_OBJECT但却是BEGIN_ARRAY 现在,我是这样分析的… 下面是adapter类 下面是接口RetroInterface.class 这是我在主要活动中的称呼 下面是json响应

  • 我正在尝试使用改版在我的应用程序上实现用户注册,但是我一直得到这个错误不确定是什么错误,java.lang.IllegalStateException:应该是BEGIN_OBJECT,但应该是BEGIN_ARRAY 这是邮递员的回复 } 我有两个模型类User模型类 和我的register类 如果可能的话有人帮我实现Kotlin coroutines

  • 我正在尝试使用改版在我的应用程序上实现登录,但是我一直得到这个错误不确定是什么错误,java.lang.IllegalStateException:应该是BEGIN_OBJECT,但应该是BEGIN_ARRAY 这是邮递员的回复 和我的登录类

  • 日安, 我知道这个问题已经被问到了,我找到的另外两个话题在某一个点之前确实有所帮助。我有一个来自客户机的响应,但我无法控制,所以它的格式是我需要处理的。 Json包含来自多个用户的用户信息列表。这就是我使用列表而不是POJO的原因。问题如下。POJO返回时没有任何错误,但也没有任何值,并且只有一个值而不是多个值 来自postman的JASON响应如下所示(这就是我意识到它被检索的方式可能被视为对象

  • apiclient.kt:- } apiInterface.kt:- } myactivity.kt:-

  • 首先,我从服务器获得了这个Json对象,然后使用reverfit lib显示曲目名称是列表。但其返回此问题应为BEGIN_ARRAY,但在COLOMUNS 1处为BEGIN_OBJECTS。 我正在使用这些类: 并且此跟踪类: