android 解析Json字符串响应(用户列表)并获取列表中的每个单独元素(即用户),适用于一个用户,但不适用于用户列表

tzdcorbm  于 2023-03-27  发布在  Android
关注(0)|答案(1)|浏览(106)

我使用这个端点来测试我的解析器: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

nszi6y05

nszi6y051#

这是因为您只向解析器提供了一个对象(用户),但实际上,您从服务器获得了用户数组。
另外,你的JSON响应示例是不正确的。它是一个对象数组,因此开始的[[ {user}, {user} ]
这将帮助您:
https://futurestud.io/tutorials/gson-mapping-of-arrays-and-lists-of-objects

Gson gson = new Gson();  
User[] parsedUsers = gson.fromJson(response, User[].class);

相关问题