Serialization mengubah objek menjadi format yang dapat disimpan atau dikirim. Kotlin memiliki kotlinx.serialization yang compiler-aware dan aman.

# Serialization Fundamentals

Pelajari konsep dasar serialisasi: mengubah object menjadi bytes dan sebaliknya, tiga use case utama (persistence, network, cache), dan strategi skema evolusi.

Buka →
# kotlinx.serialization

Pelajari kotlinx.serialization: anotasi @Serializable, compiler plugin yang menghasilkan serializer otomatis, dan penggunaan Json.encodeToString / decodeFromString.

Buka →
# JSON Serialization

Pelajari JSON serialization dengan kotlinx.serialization: anotasi @SerialName, @Transient, @Optional, konfigurasi Json (prettyPrint, ignoreUnknownKeys), dan nested object.

Buka →
# Custom Serializers

Pelajari cara menulis KSerializer`<T>` kustom untuk tipe kompleks seperti LocalDate, BigDecimal, dan Color yang belum didukung bawaan kotlinx.serialization.

Buka →
# Polymorphic Serialization

Pelajari polymorphic serialization: sealed class dengan beberapa subclass, discriminator field, dan anotasi @JsonClassDiscriminator untuk kontrol nama discriminator.

Buka →
# JSON Schema Validation

Pelajari validasi JSON terhadap schema: cek tipe field, required, range, format (email/date), enum, dan deteksi field tidak dikenali sebelum diproses aplikasi.

Buka →
# CSV Processing

Pelajari parsing dan penulisan CSV di Kotlin: compliance RFC 4180, type-safe mapping ke data class, dan streaming reader untuk file besar.

Buka →
# XML Processing

Pelajari XML processing di Kotlin: parser DOM yang membangun tree, streaming parser SAX-like untuk file besar, escaping entity, dan trade-off DOM vs streaming.

Buka →
# Binary Formats

Pelajari format binary ProtoBuf: encoding field tag + wire type, varint compression, schema evolution (backward dan forward compatibility), dan perbandingan ukuran dengan JSON.

Buka →
# Serialization Security

Pelajari risiko keamanan serialization: polymorphic RCE, DoS via payload besar, billion laughs, gadget chain; serta pola defensif—validasi input, batasi ukuran, tolak field tidak dikenali.

Buka →