Compartilhar via


Serialização e desserialização JSON no .NET – visão geral

O namespace System.Text.Json fornece funcionalidades para serializar e desserializar (ou fazer marshalling e unmarshalling) em JavaScript Object Notation (JSON). A Serialização é o processo de conversão do estado de um objeto, ou seja, os valores de suas propriedades, em um formulário que pode ser armazenado ou transmitido. O formulário serializado não inclui nenhuma informação sobre os métodos associados de um objeto. A desserialização reconstrói um objeto do formulário serializado.

O design da biblioteca System.Text.Json enfatiza o alto desempenho e a baixa alocação de memória em um amplo conjunto de recursos. O suporte interno a UTF-8 otimiza o processo de leitura e gravação de texto JSON codificado como UTF-8, que é a codificação mais predominante para dados na Web e arquivos em disco.

A biblioteca também fornece classes para trabalhar com um DOM (modelo de objeto do documento) na memória. Esse recurso permite o acesso aleatório aos elementos em uma cadeia de caracteres ou arquivo JSON.

Para o Visual Basic, há algumas limitações em quais partes da biblioteca você pode usar. Para saber mais, confira Suporte para Visual Basic.

Como obter a biblioteca

A biblioteca é integrada como parte do framework compartilhado para o .NET Core 3.0 e versões posteriores. O recurso de geração de origem é interno e faz parte da estrutura compartilhada do .NET 6 e versões posteriores.

Para versões de estrutura anteriores ao .NET Core 3.0, instale o pacote do NuGet System.Text.Json. O pacote é compatível com:

  • .NET Standard 2.0 e posteriores
  • .NET Framework 4.6.2 e versões posteriores
  • .NET 8 e posterior

Namespaces e APIs

Importante

System.Text.Json não dá suporte às seguintes APIs de serialização que você pode ter usado anteriormente:

Reflexão versus geração de origem

Por padrão, System.Text.Json coleta os metadados necessários para acessar propriedades de objetos para serialização e desserialização em runtime usando reflexão. Como alternativa, System.Text.Json pode usar o recurso de geração de código-fonte C# para melhorar o desempenho, reduzir o uso de memória privada e facilitar a aparação de assembly, e, assim, reduzir o tamanho do aplicativo.

Para obter mais informações, confira Reflexão versus geração de origens.

Informações de segurança

Para informações sobre ameaças à segurança consideradas ao projetar JsonSerializer e como elas podem ser atenuadas, confira Modelo de riscoSystem.Text.Json.

Segurança de thread

O serializador System.Text.Json foi projetado com segurança de threads em mente. Na prática, isso significa que, uma vez bloqueadas, as instâncias de JsonSerializerOptions podem ser compartilhadas com segurança em vários threads. JsonDocument fornece uma representação do DOM que é imutável e, no .NET 8 e versões posteriores, thread-safe para valores JSON.

Recursos adicionais