Sobes.tech
Junior

O que é serialização?

sobes.tech IA

Resposta da IA

A serialização é o processo de transformar uma estrutura de dados ou objeto num formato que pode ser guardado, transmitido pela rede ou restaurado posteriormente. O processo inverso é chamado desserialização.

Objetivos principais da serialização:

  • Guardar estado: Permite guardar o estado de um objeto ou estrutura de dados para recuperação posterior.
  • Transmissão de dados: Fornece um formato padronizado para troca de dados entre diferentes sistemas ou processos.
  • Caching: Dados serializados são convenientes para armazenamento temporário em cache.

Em Python, frequentemente utilizam-se os seguintes módulos e formatos para serializar:

  • pickle: Módulo padrão do Python para serializar e desserializar objetos Python. Adequado para guardar e carregar dados dentro de aplicações Python. Não recomendado para troca de dados com aplicações em outras linguagens devido à especificidade do formato.

    # Guardar objeto
    import pickle
    
    data = {'a': 1, 'b': [2, 3]}
    with open('data.pkl', 'wb') as f:
        pickle.dump(data, f)
    
    # Carregar objeto
    with open('data.pkl', 'rb') as f:
        loaded_data = pickle.load(f)
    
  • json: Módulo padrão para trabalhar com JSON (JavaScript Object Notation). Amplamente utilizado para API web e troca de dados entre diferentes sistemas. JSON é um formato de texto legível e leve. Suporta um conjunto limitado de tipos de dados (strings, números, valores booleanos, listas, dicionários, null).

    # Serialização em JSON
    import json
    
    data = {'name': 'Alice', 'age': 30}
    json_string = json.dumps(data)
    print(json_string)
    
    # Desserialização de JSON
    loaded_data = json.loads(json_string)
    print(loaded_data)
    
  • yaml: Módulo para trabalhar com YAML (YAML Ain't Markup Language). Destaca-se por sua sintaxe mais legível em comparação com JSON. Frequentemente usado para arquivos de configuração.

    # Serialização em YAML (requer instalação do PyYAML)
    # import yaml
    #
    # data = {"list": [1, 2, 3], "dict": {"key": "value"}}
    # yaml_string = yaml.dump(data)
    # print(yaml_string)
    #
    # # Desserialização de YAML
    # loaded_data = yaml.load(yaml_string, Loader=yaml.FullLoader)
    # print(loaded_data)
    
  • protobuf (Protocol Buffers): Formato de serialização desenvolvido pelo Google. Binário, eficiente e que suporta esquemas de dados (com ficheiros .proto). Frequentemente usado em sistemas de alto desempenho e RPC (Chamada de Procedimento Remoto).

A escolha do formato de serialização depende da tarefa específica, requisitos de desempenho, legibilidade e necessidade de interação com outras linguagens de programação.