Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 指定为非null的改装参数为null_Android_Kotlin_Model_Retrofit2 - Fatal编程技术网

Android 指定为非null的改装参数为null

Android 指定为非null的改装参数为null,android,kotlin,model,retrofit2,Android,Kotlin,Model,Retrofit2,我是Kotlin的新手,我试图解析一个简单的JSON,但我得到了一个 “指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParametersNotNull,参数凭证” result.products始终为空,但我可以在日志中看到,通过200OK请求,Reformation正确地获得了json。所以我想当我试图解析json时,这可能是个问题 我怎样才能解决这个问题 我在下面添加了我的代码 disposable = ApiServe.ge

我是Kotlin的新手,我试图解析一个简单的JSON,但我得到了一个
“指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParametersNotNull,参数凭证”

result.products
始终为空,但我可以在日志中看到,通过200OK请求,Reformation正确地获得了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)
    }
disposable=ApiServe.get凭单()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(
{result->process凭单(result.products)},
{error->error(error.message)}
)
凭证(凭证:列表){
mCallback?.OnResponseVoucher(凭证)
}
在ApiServe课程中获得担保

@GET(Api.ENDPOINT.VOUCHER_ENDPOIN)
        fun getVoucher(): Observable<Response<Vouchers>>
@GET(Api.ENDPOINT.document\u ENDPOIN)
fun get凭证():可观察
模型

数据类凭证(val产品:列表)
数据类产品(val代码:字符串,val名称:字符串,val价格:双精度)
JSON


{“产品”:[{“代码”:“凭单”,“名称”:“凭单”,“价格”:3},{“代码”:“球”,“名称”:“凭单球”,“价格”:10},{“代码”:“牛奶”,“名称”:“凭单牛奶”,“价格”:8.5}]}

我相信这里的问题可能是这样的

 fun getVouchers(): Observable<Voucher.Vouchers>
fun get凭单():可观察
您确定getVoucher返回的类型正确吗?它不应该是可见的吗

编辑:
原来作者在他的GsonConverterFactory中使用了
excludeFieldsWithModifiers
,这导致了对模型的解析问题。

我认为这是因为您在
翻新
服务接口中用
响应
包装了返回类型。试着像这样改变:

@GET(Api.ENDPOINT.VOUCHER_ENDPOIN)
fun getVoucher(): Observable<Voucher>
@GET(Api.ENDPOINT.document\u ENDPOIN)
fun get凭证():可观察

问题中的我的模型类数据类凭证(val产品:列表)数据类产品(val代码:字符串,val名称:字符串,val价格:双精度)我已在Android Studiot中使用插件生成模型类这是我的模型类:数据类凭证(val产品:列表)数据类产品(val代码:字符串,val名称:字符串,val价格:双精度)您的GetDelicients()看起来像什么?当结果部件(结果对象)被触发时,您是否尝试过在一次性中进行调试?是的,result.products上的result objet get null可能是我的模型类的问题??我已经用get凭单()更新了是的,好的,我把有趣的get凭单()放在了可观察的位置,但是在我的改进方法{result->process凭单(result.products)}中,products是空的。但是我可以在日志中看到我有200 ok和json。我只是从我的问题中删除你是否有可能使用proguard?Android studio提供的默认proguard。只是删除和所有似乎工作,但我的产品仍然无效。我很确定这一定是模型类的一个问题。您确定在您的项目中没有ApiService可能引用的具有名称凭证的其他类吗?快速检查将是检查导入或cmd(ctrl)+b返回类型的getVouchersYes,这是唯一的一个。我可以将名称更改为另一个名称,products=null此答案是错误的-将其包装在响应中可以对错误检查过程进行更精细的控制-如果没有它,任何不成功的响应都会触发onError。实际上,通过包装它,您可以检查错误是否是由于缺少internet连接造成的,或者只是来自服务器的400个响应。那么,您为什么不在回答中包装一个响应呢?我不是在说包装是否有用。我只是用给定的json响应映射对象。因为在这种情况下不需要它,所以它不会导致错误。正如我在编辑后的回答中所说,问题出在GsonConverterFactory的
排除字段修改器中,作者在问题中没有具体说明这一点。哈哈,很有趣。对于映射给定的JSON,我认为我的答案是清楚和正确的。所以我不想再和你在一起浪费时间了。谢谢你的反馈。它不是,因为在一开始作者有一个未包装的版本,就像你的一样,有相同的问题。去吧,想浪费就浪费吧。很好的一天
@GET(Api.ENDPOINT.VOUCHER_ENDPOIN)
fun getVoucher(): Observable<Voucher>