Sobes.tech
Junior

Co je serializace?

sobes.tech AI

Odpověď od AI

Serializace je proces převodu datové struktury nebo objektu do formátu, který lze uložit, přenést po síti nebo později obnovit. Opakem je deserializace.

Hlavní cíle serializace:

  • Uložení stavu: Umožňuje uložit stav objektu nebo datové struktury pro pozdější obnovení.
  • Přenos dat: Zajišťuje standardizovaný formát pro výměnu dat mezi různými systémy nebo procesy.
  • Cacheování: Serializovaná data jsou vhodná pro dočasné uložení v cache.

V Pythonu se často používají následující moduly a formáty pro serializaci:

  • pickle: Standardní modul Pythonu pro serializaci a deserializaci Python objektů. Vhodný pro ukládání a načítání dat v Python aplikacích. Nedoporučuje se pro výměnu dat s aplikacemi v jiných jazycích kvůli specifikaci formátu.

    # Uložení objektu
    import pickle
    
    data = {'a': 1, 'b': [2, 3]}
    with open('data.pkl', 'wb') as f:
        pickle.dump(data, f)
    
    # Načtení objektu
    with open('data.pkl', 'rb') as f:
        loaded_data = pickle.load(f)
    
  • json: Standardní modul pro práci s JSON (JavaScript Object Notation). Široce používaný pro webové API a výměnu dat mezi různými systémy. JSON je textový a lehký formát. Podporuje omezenou sadu datových typů (řetězce, čísla, boolean, seznamy, slovníky, null).

    # Serializace do JSON
    import json
    
    data = {'name': 'Alice', 'age': 30}
    json_string = json.dumps(data)
    print(json_string)
    
    # Deserializace z JSON
    loaded_data = json.loads(json_string)
    print(loaded_data)
    
  • yaml: Modul pro práci s YAML (YAML Ain't Markup Language). Vyšší čitelnost syntaxe ve srovnání s JSON. Často používaný pro konfigurační soubory.

    # Serializace do YAML (vyžaduje instalaci PyYAML)
    # import yaml
    #
    # data = {"list": [1, 2, 3], "dict": {"key": "value"}}
    # yaml_string = yaml.dump(data)
    # print(yaml_string)
    #
    # # Deserializace z YAML
    # loaded_data = yaml.load(yaml_string, Loader=yaml.FullLoader)
    # print(loaded_data)
    
  • protobuf (Protocol Buffers): Formát serializace vyvinutý společností Google. Binární, efektivní a podporuje schémata dat (s použitím souborů .proto). Často používaný v systémech s vysokým výkonem a RPC (Remote Procedure Call).

Výběr formátu serializace závisí na konkrétním úkolu, požadavcích na výkon, čitelnosti a potřebě spolupráce s jinými programovacími jazyky.