You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin远程JSON解析崩溃问题求助

问题解决:JSON解析错误导致应用崩溃

核心问题

你的接口返回的是JSON数组(用[]包裹的多个对象),但代码里错误地先把响应转换成JSONObject,这直接触发了类型不匹配的崩溃,日志里的JSONArray cannot be converted to JSONObject已经明确指出了这点。

另外之前列表为空是因为Android默认禁止明文HTTP请求,添加android:usesCleartextTraffic="true"后请求能正常获取数据,但解析逻辑错误导致崩溃。

修正后的MainActivity关键代码

把解析部分的逻辑改成直接处理JSON数组,并且要在主线程通知Adapter更新数据:

client.newCall(request).enqueue(object : Callback {
    override fun onFailure(call: Call, e: IOException) {
        e.printStackTrace()
        // 在主线程提示用户请求失败
        runOnUiThread {
            Toast.makeText(this@MainActivity, "请求失败", Toast.LENGTH_SHORT).show()
        }
    }

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

        try {
            // 直接把响应解析成JSONArray,而非JSONObject
            val episodeArray = JSONArray(strResponse)
            for (i in 0 until episodeArray.length()) {
                val episodeDetails = episodeArray.getJSONObject(i)
                list.add(
                    ListItem(
                        episodeDetails.getString("pub_date"),
                        episodeDetails.getString("title"),
                        episodeDetails.getString("description"),
                        episodeDetails.getString("youtube_link")
                    )
                )
            }
            // 必须在主线程更新RecyclerView的Adapter
            runOnUiThread {
                rcView.adapter?.notifyDataSetChanged()
            }
        } catch (e: JSONException) {
            e.printStackTrace()
            runOnUiThread {
                Toast.makeText(this@MainActivity, "数据解析失败", Toast.LENGTH_SHORT).show()
            }
        }
    }
})

额外注意事项

  • 主线程更新UI:OkHttp的回调运行在子线程,所有涉及UI或Adapter的操作必须通过runOnUiThread切换到主线程,否则会触发异常。
  • 空安全处理:用response.body?.string() ?: return替代原代码的response.body!!.string(),避免空指针崩溃,这是Kotlin更安全的写法。
  • 错误提示:添加Toast提示能让用户直观了解请求或解析的状态,提升应用体验。

内容的提问来源于stack exchange,提问作者Alexey Pavlov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:02:36