DareFox
03/05/2024, 1:06 PM@Serializable
sealed class Parser {
abstract fun parse(text: String)
}
@Serializable
@SerialName("XParser")
object XParser: Parser() {
override fun parse(text: String) {}
}
@Serializable
@SerialName("YParser")
object YParser: Parser() {
override fun parse(text: String) {}
}
@Serializable
data class Settings(val parsers: List<Parser>)
fun main() {
val settings = listOf(XParser, YParser)
Json.encodeToString(settings)
}
Gives {"parsers":[{"type":"XParser"},{"type":"YParser"}]}
that could be better represented as {"parsers": ["XParser", "YParser"]}
(like enum serialiaztion) since every object will not have value, only type.
I know that limitation exists because children of sealed class can be non-singleton, but is there a way to override it? Or is there a better way to do this?Adam S
03/06/2024, 1:05 PM