Caused by: org.json.JSONException: Index 2 out of range [0..2) Volley 请求错误

Caused by: org.json.JSONException: Index 2 out of range [0..2) Volley Request Error

我知道关于同一主题还有一些其他主题,但还没有解决我的问题,所以如果可能的话我需要一些帮助。我正在尝试使用 Android 中的截击向 API 发送 GET 请求。我的科特林代码如下所示:

 val requestQueue = Volley.newRequestQueue(c)
    val sharedPref = c.getSharedPreferences(SHARED_PREFS, MODE_PRIVATE).getString(TEXT, "")
    Log.i("EDITTT", sharedPref)
    var  jsonArrayRequest = object : JsonArrayRequest(Request.Method.GET, url, null,
            Response.Listener { response ->
                var jsonArray: JSONArray = response
                for (item in 0..jsonArray.length()) {
                    var bookObject: JSONObject = jsonArray.getJSONObject(item)
                    var title: String = bookObject.getString("title")
                    var author: String = bookObject.getString("author")
                    var publisher: String = bookObject.getString("publisher")
                    var date : String = bookObject.getString("date")
                    var bookItem: BookItem = BookItem(title, author, publisher)
                    bookData.add(bookItem)
                    println(bookData)
                }
                liveBookData.setValue(bookData)

            },
            Response.ErrorListener { error ->
                Log.i("ERRORRR", error.toString())
            })
    {
        @Throws(AuthFailureError::class)
        override fun getHeaders(): Map<String, String> {
            val headers = HashMap<String, String>()
            headers.put("Authorization", "$sharedPref");
            return headers
        }
    }

我收到了这个错误: 原因:org.json.JSONException:索引 2 超出范围 [0..2) 如果您有任何建议,请让我知道。谢谢!

问题是 for (item in 0..jsonArray.length()) 是一个包含范围,这意味着如果 jsonArray 的长度为 2(如您的情况),它将循环 3 次:位置 0、1 和2.

尝试使用 until,即 for (item in 0 until jsonArray.length())。不同之处在于 until 不包括最后一个元素,因此它只会循环 2 次:位置 0 和 1。

更多信息可以在官方文档中找到:https://kotlinlang.org/docs/reference/ranges.html#ranges-and-progressions