onRetrofitFailure()无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

用户名

给我一个Json数据,用于存储图像和其他一些数据。我正在尝试使用Retrofit在imageview中获取该图像。我创建了代码中详细介绍的必要内容的DTO。改装失败,我遇到了错误。我该如何解决?

  1. 创建改造实例
  2. 创建JSON数据和属性的DTO
  3. 还创建了API服务https://s3.ap-south-1.amazonaws.com/zestlife/promotional_banner.json存储JSON数据的链接。

    @Parcelize
    @JsonIgnoreProperties(ignoreUnknown = true)
    open class MerchantPromotionDTO(
    
        @JsonProperty("image") var image: ImageUrlsDTO? = null,
        @JsonProperty("cta") var cta: CTADTO? = null,
        @JsonProperty("probability") var probability: Int? = 0,
        @JsonProperty("isDismissible") var isDismissible: Boolean? = true,
        @JsonProperty("showImmediate") var showImmediate: Boolean? = false
        ) : BaseResponseDTO()
    
    @Parcelize
        @JsonIgnoreProperties(ignoreUnknown = true)
        class MerchantpromotionBDTO(
        @JsonProperty("promotions") var promotions: ArrayList<MerchantPromotionDTO>?=null
    ) : BaseResponseDTO()
    
    @GET("https://demo6861386.mockable.io/banner/test")
    fun getPromotionalBanner(): Call<ArrayList<MerchantpromotionBDTO>>
    
    fun getPromotionalDetails(): LiveData<ResponseDTO<ArrayList<MerchantpromotionBDTO>>>{
        val pBannerDetails=MutableLiveData<ResponseDTO<ArrayList<MerchantpromotionBDTO>>>()
        ApiComponent.enqueue({
            getPromotionalBanner(
    
            )
        },object :OnRequestComplete<ArrayList<MerchantpromotionBDTO>>{
            override fun onComplete(responseDTO: ResponseDTO<ArrayList<MerchantpromotionBDTO>>) {
                pBannerDetails.value=responseDTO
            }
        }
    )
    

编辑:

override fun onStart() {
    super.onStart()

    populateData()
}

@Synchronized
private fun populateData() {       
    MerchantpromotionBDTO?.let {
        val promImageUrl = it.image?.getImageUrl(CommonUtils.getDisplayDensityLevel(context))
        picasso.load(if (promImageUrl.isNullOrEmpty()) null else promImageUrl)
                .placeholder(R.drawable.ic_placeholder_minimal)
                .into(ivMerchantPromotionBanner)
    }
}

我希望响应进入我的logcat并在Imageview中获取图像

用户名

问题是您从后端获取的JSON是:

{
    "promotions": [
        ...
    ]
}

Thas是JSON对象,而不是数组,但是您将getPromotionalBanner方法定义为返回List<MerchantpromotionBDTO>,因此JSON库无法执行反序列化,因为它期望数组(即以开头的东西[),但是会找到START_OBJECT令牌(即{)。

您可以通过将该方法的签名更改为以下方法来解决该问题:

@GET("https://demo6861386.mockable.io/banner/test")
fun getPromotionalBanner(): Call<MerchantpromotionBDTO>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

Jakson无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

无法从START_OBJECT令牌中反序列化`java.util.ArrayList <java.lang.Object>`的实例

JsonMappingException:无法从START_OBJECT令牌中反序列化java.util.List的实例

JSON解析错误:无法从START_OBJECT令牌中反序列化java.util.ArrayList实例

JSON反序列化引发异常-无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

例外:不能java.util.ArrayList中的反序列化实例出来START_OBJECT的令牌在

jsonMappingException org.codehaus.jackson.map.JsonMappingException:无法从START_OBJECT令牌中反序列化java.util.ArrayList实例

com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

Jackson 无法从 VALUE_STRING 令牌中反序列化 java.util.ArrayList 的实例

无法从START_ARRAY令牌中反序列化java.util.HashMap的实例

无法从START_ARRAY令牌中反序列化java.util.LinkedHashMap的实例

无法反序列化java.util.ArrayList的实例

无法从START_OBJECT令牌中反序列化`java.lang.String`的实例

JsonMappingException:无法从START_OBJECT令牌中反序列化java.lang.Integer的实例

无法从START_OBJECT令牌中反序列化java.lang.Class实例

无法从START_OBJECT令牌中反序列化java.lang.Boolean的实例

无法反序列化VALUE_STRING中的java.util.ArrayList实例

无法从START_OBJECT令牌中反序列化int []实例

Spring:无法从 START_OBJECT 令牌中反序列化 ENTITY 的实例

JsonMappingException:无法从START_OBJECT令牌1中反序列化java.lang.String实例

无法读取JSON:无法从START_OBJECT令牌中反序列化hello.Country []实例

为什么在使用杰克逊时抛出“无法从START_OBJECT令牌中反序列化实例”的原因

理解异常的问题:使用Jackson中的ObjectMapper,“无法从START_OBJECT令牌中反序列化`java.lang.String`的实例”

异常:“ org.codehaus.jackson.map.JsonMappingException:无法从START_OBJECT令牌中反序列化java.lang.String实例”

Java REST API:无法从START_ARRAY令牌中反序列化Object的实例

从对象转换为AWS Kinesis-> Java无法从VALUE_NUMBER_FLOAT令牌中反序列化java.util.Date的实例

com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从START_OBJECT令牌中反序列化com.utils.POJO []实例

无法从 START_ARRAY 令牌中反序列化 <Object> 的实例 - webClient