Guides
The simdjson-kotlin-serialization module plugs simdjson-kotlin into
kotlinx.serialization: decode
JSON straight into your @Serializable classes, with simdjson doing the parsing.
Decoding
Annotate your models with @Serializable, create a SimdJson instance, and
decode:
kotlin
import io.github.devcrocod.simdjson.serialization.SimdJson
import kotlinx.serialization.Serializable
@Serializable
data class Twitter(val statuses: List<Status>)
@Serializable
data class Status(val user: User)
@Serializable
data class User(val default_profile: Boolean, val screen_name: String)
val json: String = loadTwitterJson()
val simdJson = SimdJson { ignoreUnknownKeys = true }
for (status in simdJson.decodeFromString<Twitter>(json).statuses) {
if (status.user.default_profile) {
println(status.user.screen_name)
}
}To decode from a UTF-8 ByteArray (skipping the String step), use
decodeFromByteArray with an explicit serializer:
kotlin
import kotlinx.serialization.serializer
val twitter = simdJson.decodeFromByteArray(serializer<Twitter>(), bytes)Configuration
SimdJson { } builds an instance via a builder, mirroring kotlinx.serialization’s
Json { }:
| Parameter | Description |
|---|---|
ignoreUnknownKeysBoolean | Skip JSON keys with no matching property instead of failing. Default false. |
isLenientBoolean | Relax the input grammar when reading values. Default false. |
coerceInputValuesBoolean | Substitute the property default for a missing or null-for-non-null value. Default false. |
serializersModuleSerializersModule | Register contextual or polymorphic serializers. |