Sobes.tech
Junior

Ce este serializarea?

sobes.tech AI

Răspuns de la AI

Serializarea este procesul de transformare a unei structuri de date sau a unui obiect într-un format care poate fi salvat, transmis prin rețea sau restaurat ulterior. Procesul invers se numește deserializare.

Obiectivele principale ale serializării:

  • Salvarea stării: Permite salvarea stării unui obiect sau a unei structuri de date pentru recuperare ulterioară.
  • Transmiterea datelor: Asigură un format standardizat pentru schimbul de date între diferite sisteme sau procese.
  • Caching: Datele serializate sunt utile pentru stocarea temporară în cache.

În Python, se folosesc frecvent următoarele module și formate pentru serializare:

  • pickle: Modul standard Python pentru serializarea și deserializarea obiectelor Python. Potrivit pentru salvarea și încărcarea datelor în aplicații Python. Nu este recomandat pentru schimbul de date cu aplicații în alte limbaje din cauza specificității formatului.

    # Salvarea unui obiect
    import pickle
    
    data = {'a': 1, 'b': [2, 3]}
    with open('data.pkl', 'wb') as f:
        pickle.dump(data, f)
    
    # Încărcarea unui obiect
    with open('data.pkl', 'rb') as f:
        loaded_data = pickle.load(f)
    
  • json: Modul standard pentru lucrul cu JSON (JavaScript Object Notation). Folosit pe scară largă pentru API-uri web și schimbul de date între diferite sisteme. JSON este un format text ușor de citit și suportă un set limitat de tipuri de date (șiruri, numere, valori boolean, liste, dicționare, null).

    # Serializare în JSON
    import json
    
    data = {'name': 'Alice', 'age': 30}
    json_string = json.dumps(data)
    print(json_string)
    
    # Deserializare din JSON
    loaded_data = json.loads(json_string)
    print(loaded_data)
    
  • yaml: Modul pentru lucrul cu YAML (YAML Ain't Markup Language). Se distinge prin sintaxa sa mai ușor de citit comparativ cu JSON. Folosit frecvent pentru fișiere de configurare.

    # Serializare în YAML (este necesară instalarea PyYAML)
    # import yaml
    #
    # data = {"list": [1, 2, 3], "dict": {"key": "value"}}
    # yaml_string = yaml.dump(data)
    # print(yaml_string)
    #
    # # Deserializare din YAML
    # loaded_data = yaml.load(yaml_string, Loader=yaml.FullLoader)
    # print(loaded_data)
    
  • protobuf (Protocol Buffers): Format de serializare dezvoltat de Google. Binar, eficient și suportă scheme de date (cu fișiere .proto). Folosit frecvent în sisteme de înaltă performanță și RPC (Remote Procedure Call).

Alegerea formatului de serializare depinde de sarcina specifică, de cerințele de performanță, lizibilitate și necesitatea de a interacționa cu alte limbaje de programare.