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 é interna como parte da estrutura compartilhada 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 reúne os metadados necessários para acessar propriedades de objetos para serialização e desserialização em tempo de execução usando reflexão. Como alternativa, System.Text.Json pode usar o recurso de geração de origem C# para melhorar o desempenho, reduzir o uso de memória privada e facilitar o corte do assembly, o que reduz 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.

Acesso thread-safe

O serializador System.Text.Json foi projetado com a segurança e o acesso thread-safe 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 imutável e no .NET 8 e versões posteriores, thread-safe, representação do DOM para valores JSON.

Recursos adicionais