Параметр модификации, указанный как ненулевой, является нулем - PullRequest
0 голосов
/ 15 мая 2019

Я новичок в Kotlin и пытаюсь разобрать простой JSON, но я получаю " Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter vouchers"

result.products всегда равно нулю, но я вижу в журналах, что модернизация корректно получает JSON с запросом 200 ok. Так что я полагаю, что это может быть проблемой, когда я пытаюсь разобрать json

Как мне это решить?

Я добавил свой код ниже

disposable = ApiServe.getVouchers()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                { result -> processVouchers(result.products) },
                { error -> error(error.message)}
            )

fun processVouchers(vouchers : List<Product>){
        mCallback?.onResponseVouchers(vouchers)
    }

ПОЛУЧИТЬ ВАУЧЕРЫ в классе ApiServe

@GET(Api.ENDPOINT.VOUCHER_ENDPOIN)
        fun getVoucher(): Observable<Response<Vouchers>>

MODEL

data class Voucher(val products: List<Product>)
data class Product(val code: String, val name: String, val price: Double)

JSON

{"products":[{"code":"Voucher","name":"Voucher","price":3},{"code":"Ball","name":"Voucher Ball","price":10},{"code":"Milk","name":"Voucher Milk","price":8.5}]}

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Я думаю, это связано с тем, что вы возвращаете тип возврата с Response в интерфейсе сервисов Retrofit.Просто попробуйте изменить это так:

@GET(Api.ENDPOINT.VOUCHER_ENDPOIN)
fun getVoucher(): Observable<Voucher>
0 голосов
/ 15 мая 2019

Я считаю, что проблема здесь может быть в том, что

 fun getVouchers(): Observable<Voucher.Vouchers>

Вы уверены, что getVoucher возвращает правильный тип? Разве это не должно быть Observable<Voucher>?

Edit: Оказалось, что автор использовал excludeFieldsWithModifiers для своего GsonConverterFactory, что вызывало проблемы при разборе модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...