I am working on my frist Android project. I am going to build a news app. The news articles are coming from a api call, but the response body is a little bit more complicated then is thought. I have the next response body:
{
"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
}
}
I have to create a data class, could someone help me ?
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
)
I try to make a data class, but is not working.
There is great plugin for Android studio to create data class for you. JSON to Kotlin Class