java - Kotlin : Passing HashMap with multiple value types into function

标签 java android constructor hashmap

我有一个如下所示的 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中看到用法:

Json to Kotlin Class Plugin 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/

相关文章:

java - 如何接收外部应用程序的广播元数据?

android - 什么是android中的boot.img文件?

java - Parse.com 推送通知不起作用

C++在小例子中不能直接调用构造函数

c++ - 关于 C++ 类中的转换

java - 简单的树查看器库

java - 使用 PixelGrabber 加快图像处理速度

java - 从 jar 文件连接到 XML 文件

C++基本构造函数问题

java - 来自 Standalone 类的 Spring 应用程序,无需部署 WAR