Ana içeriğe geç

Serileştirme

İngilizcesi
Serialization
Okunuşu
siriılayzeyşın

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/serialization

Kısaca

Serileştirme, bellekteki veri yapılarını JSON ya da bayt gibi bir biçime dönüştürme işlemidir; böylece veriler saklanabilir veya ağ üzerinden gönderilebilir.

Serileştirme (serialization) nedir?

Serileştirme, bir programın belleğinde duran nesne, liste ya da iç içe yapı gibi veriyi; bir dosyaya kaydedilebilen, bir veritabanında ya da önbellekte saklanabilen veya bir ağ üzerinden gönderilebilen bir karakter ya da bayt dizisine dönüştürür. Ters işleme, yani bellekteki veriyi o biçimden yeniden oluşturmaya, seriden çıkarma (deserialization) denir. Birlikte, farklı programların, makinelerin ve hatta programlama dillerinin aynı veriyi paylaşmasına olanak tanırlar.

Buna ihtiyaç vardır, çünkü bellekteki veri yalnızca tek bir çalışan program içinde anlamlı olan bellek adresleri ve nesneler arasındaki referanslar gibi ayrıntılar içerir. Bir serileştirici veriyi dolaşır ve değerlerini üzerinde anlaşılmış bir biçimde yazar. JSON, XML, YAML ve CSV gibi metin biçimleri insan tarafından okunabilir; Protocol Buffers, MessagePack ve Avro gibi ikili biçimler ise daha küçük ve işlenmesi daha hızlıdır; bazı dillerin Python'ın pickle'ı gibi yerel biçimleri de vardır.

İyi bir benzetme, kendin kur mobilyalardır: bir masa parçalarına ayrılıp düz bir kutuya paketlenerek gönderilir, varış yerinde talimatlar izlenerek yeniden monte edilir. Serileştirme, bir API JSON döndürdüğünde, bir web uygulaması durumu local storage'a kaydettiğinde, bir kuyruğa mesaj konulduğunda veya bir önbellek bir nesneyi sakladığında gerçekleşir ve çoğu zaman yavaş isteklerin ardındaki gizli bir maliyettir.

Serileştirme sıklıkla kodlama (encoding) ve şifreleme ile karıştırılır. Serileştirme verinin yapısının nasıl yazılacağına karar verir; UTF-8 ya da Base64 gibi kodlama, karakterlerin veya baytların nasıl temsil edileceğine karar verir; şifreleme ise veriyi anahtarı olmayan herkesten gizler. pickle gibi yerel biçimlerle veya Java'nın yerleşik serileştirmesiyle güvenilmeyen girdileri seriden çıkarmak tehlikelidir, çünkü özel hazırlanmış bir yük kod çalıştırabilir; bu yüzden dışarıdan gelen veriler JSON gibi yalnızca veri içeren bir biçim kullanmalı ve doğrulanmalıdır.

Önemli noktalar

  • Serileştirme, bellekteki veriyi saklama veya aktarma için metne ya da baytlara dönüştürür.
  • Seriden çıkarma (deserialization), bellekteki veriyi o biçimden yeniden oluşturur.
  • JSON, XML ve YAML metin biçimleridir; Protocol Buffers ve MessagePack ikilidir.
  • API'ler, önbellekler, mesaj kuyrukları ve dosyaların hepsi serileştirmeye dayanır.
  • Güvenilmeyen verileri asla pickle gibi kod çalıştırabilen biçimlerle seriden çıkarmayın.

Örnek

Python'da JSON'u serileştirmek ve seriden çıkarmakpython
import json
from datetime import date

user = {"id": 42, "name": "Ada", "roles": ["admin"], "joined": date(2026, 9, 30)}

# Serialize: Python dict -> JSON text (the date must be converted to a string)
text = json.dumps(user, default=str)
print(text)  # {"id": 42, "name": "Ada", "roles": ["admin"], "joined": "2026-09-30"}

# Deserialize: JSON text -> Python dict
restored = json.loads(text)
print(restored["name"])          # Ada
print(type(restored["joined"]))  # <class 'str'>: the original date type is lost

Sık sorulan sorular

Serileştirme ile seriden çıkarma arasındaki fark nedir?

Serileştirme, bellekteki veriyi bir JSON metni gibi saklanabilen veya gönderilebilen bir biçime dönüştürür. Seriden çıkarma ise tersini yapar; bu biçimi okur ve veri yapılarını bellekte yeniden oluşturur.

JSON serileştirme midir?

JSON bir veri biçimidir ve veriyi JSON'a dönüştürmek en yaygın serileştirme türlerinden biridir. JavaScript'te JSON.stringify() bir değeri serileştirir, JSON.parse() ise seriden çıkarır.

Güvensiz seriden çıkarma neden tehlikelidir?

Bazı yerel biçimler her türden nesneyi yeniden oluşturabilir ve bunu yaparken kodu tetikleyebilir; dolayısıyla girdiyi kontrol eden bir saldırgan sunucuda komut çalıştırabilir. Güvenilmeyen girdiler için JSON gibi yalnızca veri içeren biçimler kullanın ve sonucu doğrulayın.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar