从 Json 到 Kotlin 数据 class

from Json to Kotlin Data class

我正在处理我的第一个 Android 项目。我要构建一个新闻应用程序。新闻文章来自 api 调用,但响应主体比想象的要复杂一些。 我有下一个响应正文:

{
  "Results": [
    {
      "Id": 120031,
      "Feed": 1,
      "Title": "Auto bijna in tweeën gespleten bij crash met tram in Houston",
      "Summary": "Een auto crashte op 21 augustus met een tram in de Amerikaanse stad Houston. Beelden van het incident zijn recent vrijgegeven. De bestuurder van de auto raakte gewond.",
      "PublishDate": "2019-09-14T12:41:22",
      "Image": "https://media.nu.nl/m/ju2xmb8a6j69_sqr256.jpg/auto-bijna-in-tweeen-gespleten-bij-crash-met-tram-in-houston.jpg",
      "Url": "https://www.nu.nl/buitenland/5992687/auto-bijna-in-tweeen-gespleten-bij-crash-met-tram-in-houston.html",
      "Related": [],
      "Categories": [
        {
          "Id": 4266,
          "Name": "Algemeen"
        },
        {
          "Id": 4269,
          "Name": "Buitenland"
        }
      ],
      "IsLiked": false
    },
    {
      "Id": 120032,
      "Feed": 1,
      "Title": "Pro- en anti-Chinese demonstranten botsen in Hongkong",
      "Summary": "De politie in Hongkong heeft zaterdag moeten ingrijpen bij gewelddadige botsingen tussen pro-Chinese en anti-Chinese demonstranten.",
      "PublishDate": "2019-09-14T12:38:04",
      "Image": "https://media.nu.nl/m/ykzxxkjafl5i_sqr256.jpg/pro-en-anti-chinese-demonstranten-botsen-in-hongkong.jpg",
      "Url": "https://www.nu.nl/buitenland/5992686/pro-en-anti-chinese-demonstranten-botsen-in-hongkong.html",
      "Related": [
        "https://nu.nl/economie/5989906/toerisme-in-hongkong-klapt-in-elkaar-door-massademonstraties.html",
        "https://nu.nl/buitenland/5989572/prominente-hongkongse-activist-joshua-wong-opnieuw-opgepakt.html",
        "https://nu.nl/buitenland/5989359/betogers-hongkong-wijken-door-vliegveldcontroles-uit-naar-winkelcentra.html"
      ],
      "Categories": [
        {
          "Id": 4266,
          "Name": "Algemeen"
        },
        {
          "Id": 4269,
          "Name": "Buitenland"
        }
      ],
      "IsLiked": false
    }
}

我必须创建一个数据 class,有人可以帮助我吗?

data class NewsArticle(
    val id: Int,
    val feed: Int,
    val title: String?,
    val summary: String?,
    val publishDate: LocalDateTime,
    val image: String?,
    val url: String?,
    val related: List<String>? = listOf(),
    val categories: List<Categories> = listOf(),
    val isLiked: Boolean
): Parcelable {
    constructor(parcel: Parcel) : this(
        parcel.readInt(),
        parcel.readInt(),
        parcel.readString(),
        parcel.readString(),
        **TODO("publishDate")**,
        parcel.readString(),
        parcel.readString(),
        parcel.createStringArrayList(),
        **TODO("categories")**,
        parcel.readByte() != 0.toByte()
    )

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeInt(id)
        parcel.writeInt(feed)
        parcel.writeString(title)
        parcel.writeString(summary)
        parcel.writeString(image)
        parcel.writeString(url)
        parcel.writeStringList(related)
        parcel.writeByte(if (isLiked) 1 else 0)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<NewsArticle> {
        override fun createFromParcel(parcel: Parcel): NewsArticle {
            return NewsArticle(parcel)
        }

        override fun newArray(size: Int): Array<NewsArticle?> {
            return arrayOfNulls(size)
        }
    }
}
data class Categories(
    val id: Int,
    val name: String
    )

我尝试制作数据 class,但没有用。

Android studio 有很棒的插件可以为您创建数据class。 JSON to Kotlin Class