Serialisasi Data dalam Pengembangan Seluler — Apa Itu, Format, dan Prinsip Kerja

Penulis: IT Sectr Diterbitkan: 2026-03-08 Waktu membaca: 8 mnt

Serialisasi adalah proses mengubah objek atau struktur data menjadi format sekuensial yang cocok untuk dikirim melalui jaringan atau disimpan dalam file. Proses sebaliknya, deserialisasi, mengembalikan data ke keadaan semula. Menurut MDN Web Docs, serialisasi diperlukan untuk setiap komunikasi antarproses. Serialisasi mendasari REST API, caching, dan pertukaran data antar komponen aplikasi.

Poin Utama

  • Serialisasi — mengubah objek menjadi aliran data untuk transmisi atau penyimpanan
  • JSON — format teks utama untuk REST API dan komunikasi web
  • Protobuf — format biner dengan kinerja dan kekompakan maksimal
  • XML — format ketat dengan validasi untuk Enterprise dan pengembangan Android
  • Pemilihan format tergantung pada kebutuhan kinerja dan kompatibilitas

Apa itu serialisasi?

Serialisasi adalah proses mengubah objek yang berada di memori operasional menjadi urutan byte atau karakter linier yang dapat dikirim melalui jaringan, disimpan dalam file, atau diteruskan ke proses lain. Tanpa serialisasi, komunikasi jaringan, penyimpanan status, dan komunikasi antarproses tidak mungkin dilakukan.

Serialisasi mencakup dua proses yang berlawanan. Proses langsung (serialisasi) mengemas data ke dalam format untuk transmisi. Proses sebaliknya (deserialisasi) mengembalikan data kembali ke objek. Deserialisasi sangat penting untuk keamanan: data input yang tidak benar dapat menyebabkan kerentanan dalam aplikasi.

Dalam pengembangan aplikasi seluler, serialisasi digunakan di mana-mana: mengirim permintaan ke server dan memproses respons, menyimpan status aplikasi saat rotasi layar, caching data di disk, dan mentransmisikan data antar layar melalui Intent (Android) atau Segue (iOS).

Tugas utama serialisasi

  • Komunikasi jaringan — transmisi data antara klien dan server
  • Penyimpanan status — menyimpan dan memulihkan data aplikasi
  • Caching — menyimpan hasil permintaan untuk akses offline
  • Lintas platform — pertukaran data antar sistem dalam berbagai bahasa
  • Logging — serialisasi objek untuk penulisan ke log

Format serialisasi utama

Format serialisasi dibagi menjadi format teks dan biner. Format teks (JSON, XML) dapat dibaca manusia dan tidak memerlukan alat untuk dilihat. Format biner (Protobuf, FlatBuffers, MessagePack) lebih kompak dan lebih cepat, tetapi tidak dapat dibaca tanpa deserialisasi. Pemilihan format adalah kompromi antara kinerja dan kemudahan debugging.

Selain JSON, XML, dan Protobuf, ada format khusus: FlatBuffers dari Google untuk game dan AR, MessagePack — alternatif biner kompak JSON, Avro dari Apache untuk big data di Kafka, YAML — format konfigurasi dengan dukungan komentar.

Format Tipe Skema Ukuran Kecepatan
JSON Teks Opsional Sedang Sedang
XML Teks XSD Besar Rendah
Protobuf Biner Wajib Kecil Tinggi
FlatBuffers Biner Wajib Kecil Maksimal
MessagePack Biner Tidak Kecil Tinggi
Avro Biner JSON Schema Kecil Tinggi

Serialisasi dalam pengembangan seluler

Serialisasi di platform seluler memiliki kekhasan tersendiri: lalu lintas terbatas, prosesor yang lebih lemah, dan kebutuhan untuk menyimpan status saat rotasi layar. Di Android, digunakan Gson, Moshi, Kotlinx Serialization. Di iOS — Codable, JSONSerialization, PropertyListEncoder. Pemilihan pustaka yang tepat sangat memengaruhi kinerja aplikasi.

Kotlinx Serialization — pustaka modern dari JetBrains untuk Kotlin Multiplatform Mobile. Mendukung JSON, Protobuf, CBOR, dan format khusus. Pembuatan kode terjadi pada tahap kompilasi melalui plugin Kotlin Serialization, yang memastikan kinerja tinggi tanpa menggunakan refleksi.

Kotlinx Serialization (Kotlin Multiplatform)

Pustaka Kotlinx Serialization menggunakan anotasi @Serializable untuk kelas dan plugin kompiler untuk menghasilkan serializer. Ini memastikan kinerja tinggi dan keamanan tipe. Format default adalah JSON, tetapi format lain juga didukung melalui modul tambahan.

kotlin
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import kotlinx.serialization.encodeToString
import kotlinx.serialization.decodeFromString

@Serializable
data class Project(
    val id: Int,
    val name: String,
    val platforms: List<String>,
    val active: Boolean
)

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

fun main() {
    val project = Project(1, "MobileApp",
        listOf("Android", "iOS"), true)

    // Serialisasi
    val jsonString = json.encodeToString(project)

    // Deserialisasi
    val restored = json.decodeFromString<Project>(jsonString)
}

Codable di iOS (Swift)

Protokol Codable — mekanisme serialisasi bawaan di Swift. Ini menggabungkan protokol Encodable (serialisasi) dan Decodable (deserialisasi). JSONEncoder dan JSONDecoder secara otomatis memproses struktur bersarang, array, nilai opsional, dan kunci khusus melalui CodingKeys.

swift
import Foundation

struct AppConfig: Codable {
    let appName: String
    let version: String
    let features: [String]
    let isProduction: Bool
}

let config = AppConfig(
    appName: "MyApp",
    version: "2.1.0",
    features: ["push", "analytics", "offline"],
    isProduction: true
)

let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]

guard let data = try? encoder.encode(config) else { return }
let jsonString = String(data: data, encoding: .utf8)

Kinerja dan perbandingan format

Kinerja format serialisasi dievaluasi berdasarkan tiga metrik: ukuran pesan, kecepatan serialisasi, dan kecepatan deserialisasi. Untuk aplikasi seluler, ketiganya penting: ukuran memengaruhi lalu lintas dan waktu pemuatan, kecepatan — responsivitas antarmuka dan waktu startup aplikasi.

Protobuf dan FlatBuffers menunjukkan hasil terbaik berkat representasi biner. FlatBuffers dibedakan oleh fakta bahwa ia tidak memerlukan langkah deserialisasi terpisah — data dibaca langsung dari buffer biner, yang ideal untuk game dan aplikasi AR dengan kebutuhan latensi minimal. JSON tetap menjadi format paling populer untuk REST API, meskipun kinerjanya lebih rendah, berkat kesederhanaan dan universalitasnya.

Skenario Format yang direkomendasikan Alasan
REST API JSON Universalitas, keterbacaan, dukungan
Mikroservis Protobuf Kekompakan, kecepatan, gRPC
Game / AR FlatBuffers Zero-copy, latensi minimal
Big Data Avro Kompatibilitas dengan Kafka dan Hadoop
Konfigurasi YAML Komentar, keterbacaan
Android layouts XML Standar platform

Pengujian komparatif

Pengujian praktis pada kumpulan 1000 objek pengguna menunjukkan: Protobuf membuat pesan berukuran 12 KB (JSON — 85 KB, XML — 120 KB). Waktu serialisasi: Protobuf — 2 ms, JSON — 8 ms, XML — 25 ms. Angka-angka ini menjadikan format biner lebih disukai untuk sistem beban tinggi dan aplikasi seluler dengan lalu lintas terbatas.

Contoh serialisasi data

Contoh menunjukkan serialisasi objek yang sama dalam format yang berbeda. Ini membantu membandingkan ukuran dan keterbacaan secara visual. Objek User yang sama akan diserialisasi dalam JSON, XML, dan Protobuf — terlihat jelas bahwa JSON lebih kompak daripada XML, dan Protobuf adalah yang paling kompak dan sekaligus tidak dapat dibaca.

Satu objek dalam tiga format

JSON — sintaks minimal, kunci dalam tanda kutip, nilai dari berbagai tipe. Menempati 80 karakter. Keterbacaan tinggi, struktur visual jelas. Cocok untuk API di mana kecepatan pengembangan dan debugging penting.

XML — setiap elemen dibungkus dalam tag pembuka dan penutup. Menempati 150 karakter. Keterbacaan sedang, struktur ketat. Cocok untuk aliran dokumen dan sistem yang memerlukan validasi melalui XSD.

Protobuf — biner, 32 byte untuk data ini. Tidak terbaca — memerlukan deserialisasi untuk dilihat. Ukuran minimal membuatnya ideal untuk sistem beban tinggi dan aplikasi seluler.

json
{
  "id": 42,
  "name": "IT Sectr",
  "email": "team@itsectr.com",
  "role": "admin",
  "active": true
}
xml
<user>
    <id>42</id>
    <name>IT Sectr</name>
    <email>team@itsectr.com</email>
    <role>admin</role>
    <active>true</active>
</user>

Praktik terbaik serialisasi

Praktik terbaik membantu menghindari kesalahan umum dan memilih strategi serialisasi yang tepat untuk proyek. Mengikuti rekomendasi ini meningkatkan kinerja, keamanan, dan pemeliharaan kode.

Rekomendasi untuk pengembangan seluler

  1. Pilih format berdasarkan skenario — JSON untuk REST API, Protobuf untuk gRPC dan mikroservis
  2. Hindari Java Serializable — mekanisme lambat dan tidak aman, gunakan Kotlinx Serialization atau Moshi
  3. Abaikan kunci yang tidak dikenal — konfigurasikan parser untuk melewati bidang yang tidak ada dalam model
  4. Cache data yang telah dideserialisasi — hindari penguraian berulang data yang sama
  5. Validasi data input — periksa batas dan tipe saat deserialisasi

Keamanan dan serialisasi

Keamanan serialisasi — aspek yang sangat penting, terutama saat mendeserialisasi data dari sumber yang tidak terpercaya. Serangan deserialisasi dapat menyebabkan eksekusi kode jarak jauh (RCE), salah satu kerentanan paling berbahaya dalam aplikasi web dan seluler. Kasus paling terkenal terkait dengan Java Serializable dan Python pickle.

Protobuf dan JSON memiliki perlindungan bawaan terhadap serangan semacam itu, karena mereka hanya bekerja dengan data, bukan dengan objek arbitrer. Java Serializable, sebaliknya, dapat memulihkan kelas apa pun yang tersedia di classpath, yang membuatnya berbahaya untuk menerima data dari sumber eksternal. Di Android, disarankan untuk menggunakan Kotlinx Serialization atau Moshi daripada Java Serialization standar.

Tindakan keamanan tambahan: tetapkan batasan ukuran data input, validasi skema sebelum deserialisasi, jangan percaya Content-Type dari header HTTP, gunakan daftar putih (allowlist) untuk kelas yang diizinkan. Perbarui pustaka serialisasi secara teratur, karena kerentanan di dalamnya secara periodik ditemukan dan diperbaiki.

Pertanyaan yang Sering Diajukan

Apa perbedaan antara serialisasi dan marshalling?

Serialisasi mengubah objek menjadi urutan byte, marshalling mentransmisikan data antara ruang alamat yang berbeda dengan mempertahankan tipe dan struktur. Marshalling mencakup serialisasi sebagai bagian dari proses, tetapi juga dapat mencakup pengkodean referensi dan manajemen memori.

Format serialisasi mana yang paling cepat?

FlatBuffers dari Google memberikan kecepatan maksimal berkat deserialisasi zero-copy — data dibaca langsung dari buffer biner tanpa transformasi. Protobuf menempati posisi kedua, JSON ketiga. XML adalah format paling lambat dari yang umum.

Apa yang harus dipilih untuk Android: Gson, Moshi, atau Kotlinx Serialization?

Kotlinx Serialization — pilihan terbaik untuk proyek baru di Kotlin: pembuatan kompilator, dukungan Kotlin Multiplatform, null safety. Moshi — pilihan bagus untuk proyek Java, lebih berkinerja dari Gson. Gson — pustaka paling sederhana untuk memulai, tetapi lebih lambat dan menggunakan refleksi.

Bagaimana cara menserialisasi objek dengan referensi siklik?

Referensi siklik menyebabkan rekursi tak terbatas saat serialisasi. Solusi: gunakan referensi ID alih-alih referensi langsung ke objek, terapkan adaptor serialisasi khusus (misalnya, @JsonIgnore di Jackson), atau desain ulang model data untuk menghilangkan siklus.

Apakah serialisasi memengaruhi keamanan aplikasi?

Ya, terutama deserialisasi data dari sumber yang tidak tepercaya. Kerentanan deserialisasi dapat menyebabkan eksekusi kode jarak jauh. Rekomendasi: jangan deserialisasi data dari sumber yang tidak tepercaya, gunakan daftar putih kelas saat deserialisasi, dan validasi skema data sebelum diproses.

Kesimpulan

  • Serialisasi mengubah objek menjadi aliran data untuk transmisi dan penyimpanan, deserialisasi mengembalikannya
  • JSON — standar untuk REST API, XML — untuk aliran dokumen, Protobuf — untuk mikroservis dan beban tinggi
  • Format biner (Protobuf, FlatBuffers) 3-10 kali lebih kompak dan cepat daripada format teks
  • Di Android direkomendasikan Kotlinx Serialization, di iOS — Codable bawaan
  • Caching data yang telah dideserialisasi mengurangi beban prosesor dan mempercepat aplikasi
  • Keamanan deserialisasi sangat penting — periksa data input dan gunakan daftar putih
  • Pemilihan format — kompromi antara keterbacaan, kinerja, dan kompatibilitas

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga