Mam klasyKotlin obiekt deserializacji z GSON
class ThreadComment(
banned: Int,
closed: Int,
comment: String?,
date: String?,
email: String?,
files: ArrayList<File>?,
lasthit: Int,
name: String?,
num: String?,
op: Int,
parent: String?,
postsCount: Int,
sticky: Int,
subject: String?,
tags: String?,
timestamp: Int,
trip: String?) : Comment(banned, closed, comment, date, email, files, lasthit, name, num, op, parent, postsCount, sticky, subject, tags, timestamp, trip) {
val answers: ArrayList<String> = ArrayList()}
klasa nadrzędna wygląda
open class Comment(
@com.google.gson.annotations.SerializedName("banned")
val banned: Int = 0,
@com.google.gson.annotations.SerializedName("closed")
val closed: Int = 0,
@com.google.gson.annotations.SerializedName("comment")
val comment: String? = null,
@com.google.gson.annotations.SerializedName("date")
val date: String? = null,
@com.google.gson.annotations.SerializedName("email")
val email: String? = null,
@com.google.gson.annotations.SerializedName("files")
val files: ArrayList<File>? = null,
@com.google.gson.annotations.SerializedName("lasthit")
val lasthit: Int = 0,
@com.google.gson.annotations.SerializedName("name")
val name: String? = null,
@com.google.gson.annotations.SerializedName("num")
val num: String? = null,
@com.google.gson.annotations.SerializedName("op")
val op: Int = 0,
@com.google.gson.annotations.SerializedName("parent")
val parent: String? = null,
@com.google.gson.annotations.SerializedName("posts_count")
val postsCount: Int = 0,
@com.google.gson.annotations.SerializedName("sticky")
val sticky: Int = 0,
@com.google.gson.annotations.SerializedName("subject")
val subject: String? = null,
@com.google.gson.annotations.SerializedName("tags")
val tags: String? = null,
@com.google.gson.annotations.SerializedName("timestamp")
val timestamp: Int = 0,
@com.google.gson.annotations.SerializedName("trip")
val trip: String? = null) : Serializable
Ale po deserializacji z GSON odpowiada pole jest puste.
że próbował również umieścić inicjację init, {}, ale jeszcze zerowa, przy leniwa zgłasza wyjątek o wywoływanie lazy.getValue o zerowym odniesienia do obiektu
Pokaż nam json proszę. – miensol
@miensol Obiekty json nie zawierają pól "odpowiedzi". Ale również próbowałem użyć ExclusionStrategy do serializacji i deserializacji, aby wykluczyć to pole. – Ufkoku
Uwaga dodatkowa: Jackson (JSON deser) ma wsparcie Kotlin do radzenia sobie z konstruktorami Kotlin i przypadków użycia przez https://github.com/FasterXML/jackson-module-kotlin ... dla innych bibliotek Java powinieneś sprawdzić podobne, ponieważ nie rozumieją wszystkich koncepcji Kotlin ani nie wykorzystują ich. W efekcie będziesz wykonywał nienaturalny kotlin (czyli odpowiedź od @miensol) tylko po to, by zadowolić twoją bibliotekę. niefortunnie GSON nie jest rozszerzalny w sposób, który pozwala mu być bardziej przyjaznym dla Kotlin. –