Gson解析多User JSON数组失败,求正确实现方法
解决Gson解析多个User对象的问题
错误原因
- 你之前的解析代码指定了错误的目标类型:
mutableListOf<String>().javaClass是让Gson解析成字符串列表,但实际接口返回的是User对象数组,类型完全不匹配。 - 错误提示
Expected BEGIN_ARRAY but was BEGIN_OBJECT,如果确认接口返回格式正确(是[]包裹的数组),大概率是你获取的parsedData存在格式问题,建议先打印输出parsedData确认内容是否符合标准JSON数组格式。
正确解析方式
方式一:解析为User数组
val gson = GsonBuilder().create() // 直接指定数组类型 val userArray = gson.fromJson(parsedData, Array<User>::class.java) // 遍历数组处理每个User对象 for (user in userArray) { // 示例操作:打印User的title和completed状态 println("标题:${user.title},是否完成:${user.completed}") }
方式二:解析为MutableList
由于Java泛型擦除,需要借助TypeToken明确泛型类型:
val gson = GsonBuilder().create() // 通过TypeToken指定MutableList<User>的类型 val listType = object : TypeToken<MutableList<User>>() {}.type val userList = gson.fromJson<MutableList<User>>(parsedData, listType) // 遍历列表处理每个User对象 for (user in userList) { println("用户ID:${user.userId},任务ID:${user.id}") }
内容的提问来源于stack exchange,提问作者gab
相关产品推荐
相关产品推荐

