指定为非null的Retrofit参数为null

时间:2019-05-15 12:23:44

标签: android kotlin model retrofit2

我是Kotlin的新手,正在尝试解析一个简单的json,但是我得到了一个 " Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter vouchers"

result.products始终为null,但是我在日志中看到,经过200 ok请求的改型可以正确获取json。所以我想当我尝试解析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类中的VOUCHERES

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

模型

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 个答案:

答案 0 :(得分:1)

我认为这是因为您在Response服务界面中用Retrofit包装了返回类型。只需尝试这样更改:

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

答案 1 :(得分:0)

我相信这里的问题可能是

 fun getVouchers(): Observable<Voucher.Vouchers>

您确定getVoucher返回正确的类型吗?不应该是Observable<Voucher>吗?

编辑: 事实证明,作者将excludeFieldsWithModifiers用于其GsonConverterFactory,这引起了模型解析的问题。