json 原始数组异常

json exception with primitive array

我正在打电话给我的本地主机,当然我已经为这个 android 应用程序设置了所有权限。关于 json 从字符串

解析的任何建议
fun findAll(): ArrayList<User>? {
    val url = URL("http:///10.0.2.2:8080/employees")
    val connection = url.openConnection() as HttpURLConnection
    connection.setRequestProperty("Accept", "application/json");

    var users = arrayListOf<User>()
    (if (connection.responseCode == 200) connection.inputStream else connection.errorStream).use { stream ->
        BufferedReader(InputStreamReader(stream)).use { reader ->
            var line: String?
            val response = StringBuffer()

            while ((reader.readLine().also { line = it }) != null) {
                response.append(line)
            }

            
            val jsonArray = JSONArray(response)
            for (i in 0 until jsonArray.length()) {
                val user = jsonArray.getJSONObject(i)
            }
        }
    }

    return users
}

用户数据class

data class User(var id: Long?, var first: String?, var last: String?): Parcelable 

问题出在这一行

val jsonArray = JSONArray(response)

org.json.JSONException: Not a primitive array: class java.lang.StringBuffer

来自Android Documentation

public JSONArray (Object array)

Creates a new JSONArray with values from the given primitive array.

根本原因

val jsonArray = JSONArray(response)

responseStringBuffer 的实例而不是数组,这就是编译器抛出错误的原因。

解决方案

改为使用 JSONArray(String) 构造函数。

val jsonArray = JSONArray(response.toString())