我有一个动态Json,我正试图这样解析它
obs.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .unsubscribeOn(Schedulers.io()) .subscribe(object: Observer <Response<Any>> { override fun onComplete() {} override fun onSubscribe(d: Disposable) {} override fun onNext(t: Response<Any>) { if (t.code() != 400) { val registerResponse = t.body() as RegisterResponse? //this is null println("value of register resp " + registerResponse?.status) liveData.value = t.body() as RegisterResponse ? } else { val validationError = t.body() as ValidationError? //this is also null println("error resp " + validationError?.message?.password?.get(0)) error.value = t.body() as ValidationError? } } override fun onError(e: Throwable) {} })
Any 指定并确保实例 t 不是 NULL t.body() 是 null nullable type . 这里没有足够的信息来解释原因。
Any
t
NULL
t.body()
null
nullable type
val registerResponse = t.body() as RegisterResponse val validationError = t.body() as ValidationError
这将使你的代码 干净多了
你也会得到一个例外而不是失败。