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
我知道关于同一主题还有一些其他主题,但还没有解决我的问题,所以如果可能的话我需要一些帮助。我正在尝试使用 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