我使用这个端点来测试我的解析器:https://jsonplaceholder.typicode.com/todos/
Json字符串响应示例:
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
},
{
"userId": 1,
"id": 2,
"title": "quis ut nam facilis et officia qui",
"completed": false
}, etc...
我使用这行代码来解析:
val gson = GsonBuilder().create()
val user = gson.fromJson(parsedData, User::class.java)
使用以下声明的数据类:
data class User (val userId: Int, val id: Int, val title: String, val completed: Boolean)
如果我的变量parsedData只有一个User,这是可行的,但是如果我有多个User,我会得到一个错误,我不知道如何将我的字符串响应解析成一个User数组,并使用for循环检索它们。
我尝试了这段代码,但没有成功:
val listofUsers = Gson().fromJson(parsedData, mutableListOf<String>().javaClass)
这是我得到的错误:
E/InputEventReceiver:调度输入事件异常
E/MessageQueue-JNI:MessageQueue回调中出现异常:handleReceiveCallback
E/MessageQueue-JNI:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为开始_ARRAY,但在第1行第2列路径$处为BEGIN_OBJECT
1条答案
按热度按时间nszi6y051#
这是因为您只向解析器提供了一个对象(用户),但实际上,您从服务器获得了用户数组。
另外,你的JSON响应示例是不正确的。它是一个对象数组,因此开始的
[
像[ {user}, {user} ]
这将帮助您:
https://futurestud.io/tutorials/gson-mapping-of-arrays-and-lists-of-objects