Transformar uma estrutura para armazenamento ou envio
Serialização é a conversão de valores de um programa para uma representação que possa ser armazenada ou transmitida. Essa representação pode ser textual, como JSON, ou binária. Desserialização é a leitura dessa representação para obter valores que o programa receptor consiga utilizar.
Um objeto em memória não atravessa a rede como a mesma instância que existe no programa de origem. Ele precisa ser representado segundo um formato conhecido pelo receptor. O outro programa interpreta essa representação e cria suas próprias estruturas.
Imagine um cadastro preparado pela interface. A aplicação reúne os campos em um objeto e gera um texto JSON para o corpo da requisição. O servidor lê esse texto, verifica seus campos e segue com o processamento.
Uma conversão em JSON
const contato = { nome: 'Ana', id: 42 }
const texto = JSON.stringify(contato)
const recebido = JSON.parse(texto)
console.log(typeof texto) // string
console.log(recebido.nome) // AnaNesse exemplo, texto é uma string que representa os campos do contato. recebido é outro objeto, criado pela leitura do texto. Para esses valores simples, os campos são preservados, mas a identidade do objeto original não é transportada.
Uma biblioteca HTTP pode executar parte dessa conversão automaticamente. Antes de chamar JSON.stringify, confira se a ferramenta espera um objeto ou um texto pronto. Serializar uma string que já contém JSON pode criar uma string JSON adicional, com aspas e caracteres de escape inesperados.
Nem todo valor volta da mesma forma
JSON possui um conjunto limitado de tipos. Ao usar JSON.stringify, uma propriedade de objeto com valor undefined é omitida. Funções também não são preservadas como funções executáveis, e referências circulares provocam erro na conversão padrão.
Datas exigem atenção semelhante. Uma instância de Date normalmente é representada como uma string durante a serialização JSON. Ao usar JSON.parse, você recebe a string, sem reconstruir automaticamente a instância de Date.
Por isso, serializar e desserializar não garante a preservação de todo tipo ou comportamento disponível na linguagem original. Você precisa escolher uma representação para os valores que o formato não oferece diretamente e testar sua leitura no destino.
Serialização, mapeamento e proteção
Renomear nome para name é uma transformação de campos. Essa transformação pode ocorrer antes da serialização, mas tem uma finalidade distinta. O formato de transporte pode continuar sendo JSON nas duas situações.
Serializar também não oculta o conteúdo. Um texto JSON pode ser lido por qualquer pessoa que tenha acesso a ele. Credenciais e informações pessoais exigem controles próprios de acesso e proteção, independentemente da representação escolhida.
Como conferir a conversão
Use um exemplo fictício com os tipos que sua integração realmente transporta. Compare o valor original, a representação enviada e a estrutura lida no destino. Inclua campos opcionais, valores nulos e datas quando fizerem parte do contrato.
Confira ainda se o receptor recebeu texto ou um objeto já interpretado pela biblioteca. Tentar fazer uma segunda leitura no tipo errado pode causar um erro que parece ser do conteúdo. O verbete de JSON detalha os tipos disponíveis nesse formato.
Dúvidas frequentes
Perguntas frequentes sobre Serialização
- Serializar sempre significa produzir texto?
- A representação pode ser textual ou binária. JSON é uma alternativa textual, mas não é o único formato de serialização.
- A desserialização recria o mesmo objeto?
- Ela cria uma estrutura a partir da representação recebida. A identidade, os métodos e certos tipos do objeto original podem não ser preservados pelo formato.
- JSON.parse transforma datas automaticamente?
- Na leitura padrão, uma data representada como string continua sendo uma string. A aplicação precisa interpretar esse valor conforme a convenção do contrato.
- Serialização protege informações sensíveis?
- Mudar a representação não torna o conteúdo secreto. Proteção de acesso e criptografia são responsabilidades próprias, além da conversão para transporte.
Para continuar
Recursos relacionados
Documentação
JSON.stringify na MDN
Documenta a conversão para JSON e o tratamento de valores não representáveis.
Abrir recursoDocumentação
Formato JSON na RFC 8259
Define a sintaxe, os tipos de valor e as recomendações de interoperabilidade do JSON.
Abrir recursoSite de referência
Desenvolvimento Colaborativo da Dev Side Studio
Conheça o acompanhamento técnico ao vivo para investigar conversões de valores e diferenças entre o conteúdo enviado e o reconstruído.
Abrir recursoAplicação na formação
Vibe Coding: Do Zero ao MVP
A serialização prepara valores do programa para armazenamento ou troca entre os serviços da aplicação.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.