使用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
。
- 如果没有kotlin中的@ Provide-或@ Produces注解方法,则不能提供上下文
- Android Dagger:我无法提供没有@Inject构造函数的外部类
- 尝试使用Dagger2和Kotlin将ViewModelProvider注入到Activity时出错
- Android Studio – 模拟器不在那里
- 在同步gradle – NullPointerException之后,ButterKnife不绑定视图
- 在高阶函数中调用具有参数/ s的lambda
- 结果一样,但是测试用例没有通过单元测试
- 将MainActivity转换为Kotlin之后的后续构建中的ClassNotFoundException
- Kotlin IllegalStateException:在类路径中找不到资源:kotlin / .kotlin_string_table