使用Fuel和Result将字节数组转换为Json

我想使用燃料和结果得到我的响应正文在一个JSON对象。 这是我的回调代码:

private fun LoginCallback(result: Result<Any, Exception>?) { mAuthTask = null showProgress(false) val (data, error) = result ?: return (Toast.makeText(applicationContext, R.string.error_wrong, Toast.LENGTH_SHORT).show()) result.success { val dataJson = data as Json val user: SharedPreferences = getSharedPreferences(SAVED_USER_INFOS, 0) val editor = user.edit() editor.putString(SAVED_ACCESS_TOKEN, dataJson.obj().getString(SAVED_ACCESS_TOKEN)) editor.putString(SAVED_TOKEN_LIFETIME, dataJson.obj().getString(SAVED_TOKEN_LIFETIME)) editor.apply() finish() startActivity<MainActivity>() } result.failure { showProgress(false) mPasswordView!!.error = getString(R.string.error_incorrect_password) mPasswordView!!.requestFocus() } } 

但是,当我试图把我的数据(字节数组)到Json我有这个错误:

 java.lang.ClassCastException: byte[] cannot be cast to com.github.kittinunf.fuel.android.core.Json 

任何想法可以从哪里来? 在我改变到另一个API路由之前,代码正在工作。

我验证了一个JSON字符串存储在数据中。

API响应似乎是有效的。

  Response : OK Length : 220 Body : {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OWVlZDU4NzIxMjcwMzc2MDUwZmY2MjAiLCJpYXQiOjE1MDkxNzcds0MjgsImV4cCI6MTU5NTU3NzQyOH0.VwAkLeKW2SL3bMDhQIs-0Pwx0kMg9xgzpDLxprbCUvQ","tokenExpirationDate":1509263828796} Headers : (13) null : [HTTP/1.1 200 OK] Connection : [Keep-Alive] Content-Length : [220] Content-Type : [application/json; charset=utf-8] Date : [Sat, 28 Oct 2017 07:57:08 GMT] ETag : [W/"dc-SzYVR7bdKvnAvN0IajN0NVs3SIE"] Keep-Alive : [timeout=5, max=100] Server : [Apache/2.4.25 (Debian)] X-Android-Received-Millis : [1509177392976] X-Android-Response-Source : [NETWORK 200] X-Android-Selected-Protocol : [http/1.1] X-Android-Sent-Millis : [1509177392520] X-Powered-By : [Express] 

有什么想法可能出了错?

数据是byte [] – 字节数组。 你不能把它投给Json。

 val dataJson = Json(String(data)) 

以上是正确的做法。 String(data)byte array数据转换为String