Android 如何从API获取json数据数组

Android 如何从API获取json数据数组,android,json,api,kotlin,Android,Json,Api,Kotlin,我在安卓工作室工作,使用的是Kotlin。我正在尝试从开放的琐事数据库获取json数据。这是我处理请求和响应的类: class TriviaRequest ( val results: List<TriviaResult> ) class TriviaResult( val category: String, val type: String, val question: String, val correct_answer: Strin

我在安卓工作室工作,使用的是Kotlin。我正在尝试从开放的琐事数据库获取json数据。这是我处理请求和响应的类:

class TriviaRequest (

    val results: List<TriviaResult>
)

class TriviaResult(

    val category: String,
    val type: String,
    val question: String,
    val correct_answer: String,
    val incorrect_answer: List<String>
)
这是我获取数据的代码:

 private fun fetch(){

    Log.d("fetch", "fetching")
    val url = "https://opentdb.com/api.php?amount=1&type=multiple"
    Log.d("url", "url='" + url + "'")
    val request = Request.Builder()
        .url(url)
        .build()
    Log.d("request", request.toString())
    Log.d("client", client.toString())
    client.newCall(request).enqueue(object: Callback {

        override fun onResponse(call: Call, response: Response) {

            val body = response.body?.string()
            Log.d("body", body)
            val gson = GsonBuilder().create()
            val triviaRequest = gson.fromJson(body, TriviaRequest::class.java)
            val result = triviaRequest.results[0]
            val question = result.question.toSpanned()
            Log.d("question", question.toString())
            val questionCategory = result.category.toSpanned()
            Log.d("category", questionCategory.toString())
            val correctAnswer = result.correct_answer.toSpanned()
            Log.d("correct", correctAnswer.toString())
            try {
                val incorrectAnswers = result.incorrect_answer[0].toSpanned()
                Log.d("incorrect", incorrectAnswers.toString())

            } catch (e: Exception) {
                e.printStackTrace()
            }

            override fun onFailure(call: Call, e: IOException) {
                e.printStackTrace()
            }
这是我的toSpanned函数:

fun String.toSpanned() : Spanned {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        return Html.fromHtml(this, Html.FROM_HTML_MODE_LEGACY)
    } else {
        @Suppress("DEPRECATION")
        return Html.fromHtml(this)
    }
}
我的问题、类别和正确答案工作正常,但执行此代码时:

val incorrectAnswers=结果。回答[0]不正确。toSpanned()

出现以下异常情况:

W/System.err:java.lang.NullPointerException:尝试在空对象引用上调用接口方法“java.lang.Object java.util.List.get(int)”

我做错了什么?
谢谢

将您的TriviaRequest类转换为数据类TriviaRequest,但它会给出相同的错误@USMANOSMAIN在您的数据类中,您有拼写错误错误\u答案结尾包含“s”,它应该是不正确的\u答案是这样的!短一个字母。。。谢谢@USMANosmanbut如果您对变量名称不满意,可以使用searalizedName,它可以帮助您根据需要命名变量,但searalizedName应该与Json数据变量匹配
fun String.toSpanned() : Spanned {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        return Html.fromHtml(this, Html.FROM_HTML_MODE_LEGACY)
    } else {
        @Suppress("DEPRECATION")
        return Html.fromHtml(this)
    }
}