SuperAPI AI Directory

kotlin-serialization

General & other

View repository

Updated 10-16 08:07

About this skill

Kotlin Serialization Skill

Type-safe serialization with kotlinx.serialization.

Topics Covered

JSON Serialization

@Serializable
data class User(
    val id: Long,
    val name: String,
    @SerialName("email_address") val email: String,
    val createdAt: Instant = Instant.now()
)

val json = Json { ignoreUnknownKeys = true encodeDefaults = true prettyPrint = true }

val user = json.decodeFromString(jsonString) val output = json.encodeToString(user)


### Custom Serializers
```kotlin
object InstantSerializer : KSerializer<Instant> {
    override val descriptor = PrimitiveSerialDescriptor("Instant", PrimitiveKind.LONG)
    override fun serialize(encoder: Encoder, value: Instant) = encoder.encodeLong(value.toEpochMilli())
    override fun deserialize(decoder: Decoder) = Instant.ofEpochMilli(decoder.decodeLong())
}

@Serializable
data class Event(
    @Serializable(with = InstantSerializer::class) val timestamp: Instant
)

Polymorphic Serialization

@Serializable
sealed class Response {
    @Serializable @SerialName("success")
    data class Success(val data: String) : Response()

    @Serializable @SerialName("error")
    data class Error(val message: String) : Response()
}

val json = Json { classDiscriminator = "type" }

Troubleshooting

Issue Resolution
"Serializer not found" Add @Serializable or plugin
Unknown property fails Set ignoreUnknownKeys = true

Usage

Skill("kotlin-serialization")