我有一个如下所示的 HashMap:
{
"name": "George",
"weeks": [
{
"checked": true,
"days": [
{
"checked": true,
"exercises": [
{
"exercise": "Bench Press",
"sets": [
{
"weight": 300,
"reps": 20
},
{
"weight": 400,
"reps": 30
}
]
}
]
}
]
}
]
}
所以我想我可以像这样将它传递给类的构造函数:
data class Gainer(val weeks: ArrayList<HashMap<String, ArrayList<HashMap<String, ArrayList<HashMap<String, ArrayList<HashMap<String, Long>>>>>>>>?, val name: String?) {
但是,我收到了这个错误:
java.lang.RuntimeException: Could not deserialize object. Expected a List, but got a class java.lang.String (found in field 'weeks.[0].days.[0].exercises.[0].exercise')
我猜我收到这个错误是因为当我指定 Hashmap<String, ArrayList ...>
时期待String
作为 key 类型和 ArrayList
作为值类型。但是,有时我会设置一个 boolean
作为值之一和 ArrayList
作为不同的值(value)。我不确定如何指定多个值类型。
编辑:我传递的实际上不是显示的 json 数据。它在技术上是一个文档快照。我从 Firestore 得到它。抱歉,我应该更清楚地说明这一点。
最佳答案
我一直使用Json to Kotlin Class Plugin
Json to Kotlin Class 是一个插件,可以更轻松地从 json 文件创建 POJO,并且它将解决您创建数据类的问题。
你可以在这个gif中看到用法:
您应该下载并添加到您的 Android Studio 或 IntelliJ IDE 作为插件
这是下载链接~>
Json to Kotlin Class
它救了我的命!
关于java - Kotlin : Passing HashMap with multiple value types into function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53844025/