【问题标题】:Kotlin Gson Parse IssueKotlin Gson 解析问题
【发布时间】:2019-02-15 21:47:00
【问题描述】:

我是 kotlin 的新手。解析 json 时出现此错误。

致命异常:OkHttp 调度程序

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:第226章)

那就指出这一行

val homeFeed = gson.fromJson(body, list::class.java)

我的代码:

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import com.google.gson.GsonBuilder
import com.google.gson.annotations.SerializedName
import kotlinx.android.synthetic.main.activity_main.*
import okhttp3.*
import java.io.IOException
import java.util.*

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    okht()
}

fun okht(){
    val url = "https://jsonplaceholder.typicode.com/posts"
    val request = Request.Builder().url(url).build()
    val client = OkHttpClient()
    client.newCall(request).enqueue(object: Callback{

        override fun onResponse(call: Call, response: Response) {
            val body = response?.body()?.string()

           val gson = GsonBuilder().create()
           val homeFeed = gson.fromJson(body, list::class.java)
            println(homeFeed)
        }

        override fun onFailure(call: Call, e: IOException) {
            println("fail")
        }
    })
}
}

class list(val userId: Int, val id: Int, val title: String, val body: String)

【问题讨论】:

    标签: android kotlin gson


    【解决方案1】:

    它期待一个列表对象,但正在寻找一个字符串。检查响应是否符合您的预期。

    尝试: val listType = new TypeToken>(){}.getType() val homeFeed = new Gson().fromJson(jsonArray, listType)

    另外,我建议将您的列表类更改为更合适的名称。 并且类名应该以大写字母开头。

    【讨论】:

    • 是的,显然应该是val list = Gson().fromJson(jsonArray, object: TypeToken<ArrayList<list>> {}.getType()) 或类似的东西
    猜你喜欢
    • 2020-09-21
    • 2017-10-15
    • 2018-08-12
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多