Selain apa yang dikatakan jawaban lain:
Terkadang Anda ingin membuat serial hal-hal yang bukan data murni.
Sebagai contoh, pikirkan file handle atau koneksi ke server. Meskipun pegangan file atau soketnya adalah int
, angka ini tidak berarti apa-apa saat berikutnya program dijalankan. Untuk membuat ulang objek dengan benar yang berisi pegangan untuk hal-hal seperti itu, Anda perlu membuka kembali file dan membuat ulang koneksi, dan memutuskan apa yang harus dilakukan jika ini gagal.
Banyak bahasa saat ini mendukung penyimpanan fungsi anonim dalam objek, misalnya onBlah()
penangan dalam Javascript. Ini menantang karena kode tersebut dapat berisi referensi ke potongan data tambahan yang pada gilirannya perlu diserialisasi. (Dan kemudian ada masalah kode serialisasi dalam cara lintas-platform, yang jelas lebih mudah untuk bahasa yang ditafsirkan.) Namun, bahkan jika hanya sebagian dari bahasa yang dapat didukung, masih dapat terbukti sangat berguna. Tidak banyak mekanisme serialisasi yang mencoba kode serialisasi, tetapi lihat serialize-javascript .
Dalam kasus di mana Anda ingin membuat serial objek, tetapi berisi sesuatu yang tidak didukung oleh mekanisme serialisasi Anda, Anda perlu menulis ulang kode dengan cara yang bekerja di sekitar ini. Misalnya, Anda dapat menggunakan enum sebagai pengganti fungsi anonim saat ada sejumlah fungsi yang mungkin.
Seringkali Anda ingin data berseri menjadi singkat.
Jika Anda mengirim data melalui jaringan atau bahkan menyimpannya di disk, penting untuk menjaga ukurannya tetap kecil. Salah satu cara termudah untuk mencapai ini adalah membuang informasi yang dapat dibangun kembali (misalnya, membuang cache, tabel hash, dan representasi alternatif dari data yang sama).
Tentu saja, programmer harus memilih secara manual apa yang akan disimpan dan apa yang harus dibuang, dan memastikan semuanya dibangun kembali ketika objek diciptakan kembali.
Pikirkan tentang tindakan menyelamatkan permainan. Objek mungkin mengandung banyak pointer ke data grafik, data suara, dan objek lainnya. Tetapi sebagian besar hal ini dapat dimuat dari file data game dan tidak perlu disimpan dalam file save. Membuangnya bisa melelahkan sehingga hal-hal kecil sering ditinggalkan. Saya telah mengedit beberapa file yang disimpan di waktu saya dan menemukan data yang jelas-jelas berlebihan, seperti deskripsi item tekstual.
Kadang-kadang ruang tidak penting tetapi keterbacaan adalah — dalam hal ini Anda mungkin menggunakan format ASCII (mungkin JSON atau XML).