【问题标题】:Creating a Kotlin data class without parameters创建不带参数的 Kotlin 数据类
【发布时间】:2022-10-21 04:03:06
【问题描述】:

希望我能在我正在努力解决的一个小问题上获得一些有价值的帮助。

我有一个 API 端点,它使用以下请求模式发送数据:

{
  "type": String,
  "coordinates": [
    0.949492,
    48.77163
  ]
}

可以看出;搜索中的坐标以两个 INT 值的形式提供,不带参数。

我正在尝试为此创建一个自动化测试,并将上述内容放在一个数据类中,以便可以根据需要在整个套件中使用它。

我的数据类目前看起来像下面的示例,但我不知道如何正确定义没有 val 或 var 参数的坐标列表。我现在将它定义为一个名为“list”的变量,这样它就不会抛出编译错误。我应该如何表示这个坐标列表?

data class SearchRequest(
    val type: String,
    val coordinates: List<Coordinates>
)


data class Coordinates(
    var list: Int
)

【问题讨论】:

  • 看起来它只是一个浮点数列表,因此您可以在第一堂课中定义 val coordinates: List&lt;Float&gt; 而不需要第二堂课。
  • 非常感谢您的反馈。另一个人也建议,所以绝对是要走的路!再次感谢。
  • 你可能已经意识到了,但是数据类至少需要一个参数,并且全部它的构造函数参数需要是valvar。这就是使它成为数据类的原因——它的所有数据是构造函数参数中的东西,这就是它生成的copy 函数以及它的equals/hashCode/toString 覆盖中使用的东西。所以如果你曾经想要一个具有普通的、非val/var 构造函数参数的类,你需要一个普通的类! (或者可能是一个构建器函数,它可以设置一个数据类在构建它之后,使用你额外的参数来戳它)

标签: json list kotlin json-deserialization data-class


【解决方案1】:

第二个参数是Float 值的列表,不需要为此创建单独的类,可以使用Float

data class SearchRequest(
    val type: String,
    val coordinates: List<Float>
)

【讨论】:

  • 啊辉煌。如此简单,如此容易。非常感谢您的帮助和回答!
【解决方案2】:

除了上面的答案,您还可以从 android studio 下载一个插件,只需粘贴 API 的 JSON 格式即可为您执行此操作。插件名称是 JSON to Kotlin 类转换器,我想。??

【讨论】:

    猜你喜欢
    • 2020-02-24
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    相关资源
    最近更新 更多