我正在给我的本地主机打电话,当然,这个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
}
用户数据类
data class User(var id: Long?, var first: String?, var last: String?): Parcelable
问题就在这条线上
val jsonArray = JSONArray(response)
org.json.JSONException:不是基元数组:类java.lang.StringBuffer
发布于 2020-12-12 21:51:21
公共JSONArray (对象数组) 使用给定的基元数组的值创建一个新的JSONArray。
根源
val jsonArray = JSONArray(response)
response
是StringBuffer
的一个实例,而不是数组,这就是编译器抛出错误的原因。
溶液
而是使用JSONArray(字符串)构造函数。
val jsonArray = JSONArray(response.toString())
https://stackoverflow.com/questions/65264738
复制相似问题