Android 可打包 class 具有对象类型属性

Android parcelable class with object typed properties

所以我目前正在尝试创建一个能够显示日历预订的 android 应用程序。 当我检索预订时,我得到以下 JSON:

{
  "id": "dqflkgjkzmvjdcdfdzs56f4sd7",
  "subject": "Test Meeting",
  "start": {
    "dateTime": "2021-08-02T14:00:00.0000000",
    "timeZone": "UTC"
  },
  "end": {
    "dateTime": "2021-08-02T14:30:00.0000000",
    "timeZone": "UTC"
  },
  "organiser": "Kermit"
}

如何将其转换为 Parcelable class? 我开始像这样制作 class:

@Parcelize
class Booking(
    val id: String,
    val subject: String,
    val start: String, /* This */
    val end: String, /* and this has to change to an object*/
    val organiser: String,
): Parcelable

现在我仍然需要找到开始和结束对象的类型,因为它们本身具有属性并且将其定义为单独的对象似乎没有必要,但这可能是因为我习惯了 Angular 语法。

关于如何将 JSON 数据转换为 Parcelable class 的任何想法?

通常情况下,你应该用下面的方法,这样会更好。

defining it as a separate object seems unnecessary

至少需要一个对象来处理开始和结束。

@Parcelize
data class Booking(
    @SerializedName("id")
    var id: String?,

    @SerializedName("subject")
    var subject: String?,

    @SerializedName("start")
    var start: TimeData?,

    @SerializedName("end")
    var end: TimeData?,

    @SerializedName("organiser")
    var organiser: String?
): Parcelable {

    @Parcelize
    data class TimeData(
        @SerializedName("dateTime")
        var dateTime: String?,

        @SerializedName("timeZone")
        var timeZone: String?
    ): Parcelable

}

在你的 android 工作室中使用 JSON to Kotlin Class 插件,它将有助于从 JSON

生成 data class