代码之家  ›  专栏  ›  技术社区  ›  theanilpaudel

从任何类转换到另一个类在Kotlin中返回null

  •  -1
  • theanilpaudel  · 技术社区  · 7 年前

    我有一个动态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) {}
    
    })
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   Steven Spungin    7 年前

    Any 指定并确保实例 t 不是 NULL t.body() null nullable type . 这里没有足够的信息来解释原因。

    val registerResponse = t.body() as RegisterResponse
    val validationError = t.body() as ValidationError
    

    这将使你的代码 干净多了

    你也会得到一个例外而不是失败。