Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
- O namespace System.Text.Json contém todos os pontos de entrada e os tipos principais.
- O namespace System.Text.Json.Serialization contém atributos e APIs para cenários avançados e personalização específicos para serialização e desserialização.
- O namespace System.Net.Http.Json contém métodos de extensão para serializar e desserializar cargas JSON a partir da rede.
Importante
System.Text.Json não dá suporte às seguintes APIs de serialização que você pode ter usado anteriormente:
- Atributos do namespace System.Runtime.Serialization.
- O atributo System.SerializableAttribute e a interface ISerializable. Esses tipos são usados apenas para Serialização binária e XML.
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.