Implementar a classe JsonSerializer em aplicativos C#
A linguagem de programação C# fornece suporte interno para trabalhar com dados JSON por meio do System.Text.Json
namespace. Esse namespace inclui classes e métodos para serializar e desserializar dados JSON, facilitando a conversão de objetos C# em JSON e vice-versa.
O que é serialização?
Serialização é o processo de converter o estado de um objeto (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.
No contexto de um aplicativo C#, a serialização é usada para converter um objeto C# em uma cadeia de caracteres JSON. Isso é útil para salvar dados em arquivos, enviar dados por redes ou armazenar dados em bancos de dados. Por exemplo:
- A serialização é essencial para o intercâmbio de dados entre sistemas ou aplicativos diferentes, especialmente quando eles usam diferentes linguagens de programação ou plataformas. Ele permite o compartilhamento fácil de dados em um formato padronizado que pode ser compreendido por vários sistemas.
- A serialização também é usada em APIs Web para enviar e receber dados entre clientes e servidores. Quando um cliente faz uma solicitação para um servidor, o servidor pode serializar os dados de resposta no formato JSON, que o cliente pode desserializar novamente em um objeto.
- A serialização é usada em cenários de armazenamento de dados, como salvar o estado do aplicativo ou as preferências do usuário. Ao serializar objetos para JSON, os desenvolvedores podem armazenar e recuperar facilmente estruturas de dados complexas sem a necessidade de analisar ou formatar manualmente os dados.
- A serialização geralmente é usada em mecanismos de cache, em que os dados são armazenados em um formato serializado para melhorar o desempenho e reduzir a necessidade de consultas ou cálculos de banco de dados repetidos.
Desserialização é o processo inverso de serialização, em que uma cadeia de caracteres JSON é convertida novamente em um objeto C#. A desserialização permite que os desenvolvedores trabalhem com dados JSON de forma mais estruturada, usando objetos e propriedades C#. Isso é particularmente útil ao trabalhar com APIs ou fontes de dados externas que retornam respostas JSON ou ao trabalhar com informações armazenadas em arquivos JSON.
Examinar o System.Text.Json
namespace
O System.Text.Json
namespace é uma biblioteca poderosa no .NET para trabalhar com dados JSON. Ele fornece funcionalidade para serialização (convertendo objetos C# em JSON) e desserialização (convertendo JSON de volta em objetos C#). A biblioteca foi projetada para ser rápida, eficiente e fácil de usar, tornando-a uma opção popular para desenvolvedores que trabalham com JSON em aplicativos C#.
A System.Text.Json
biblioteca faz parte da estrutura do .NET Core e está incluída no .NET 5 e versões posteriores. Ele fornece um conjunto de classes e métodos para trabalhar com dados JSON, incluindo:
-
JsonSerializer
: uma classe para converter objetos C# em JSON e vice-versa. Ele fornece métodos para serializar e desserializar dados JSON, bem como opções para personalizar o processo de serialização. -
JsonDocument
: uma classe para ler e analisar dados JSON. Ele permite que os desenvolvedores naveguem e consultem estruturas JSON sem a necessidade de desserializá-las em objetos C#. -
JsonElement
: um struct que representa um valor JSON. Ele fornece métodos para acessar e manipular dados JSON, permitindo que os desenvolvedores trabalhem com estruturas JSON de maneira mais flexível.
A JsonSerializer
classe é a classe primária usada para serialização e desserialização no System.Text.Json
namespace. Ele fornece métodos para converter objetos C# em cadeias de caracteres JSON e vice-versa, facilitando o trabalho com dados JSON em aplicativos C#.
Examinar a JsonSerializer
classe
A JsonSerializer
classe fornece os seguintes métodos para serializar e desserializar JSON:
-
Serialize
: converte um objeto C# em uma cadeia de caracteres JSON. -
Deserialize
: converte uma cadeia de caracteres JSON de volta em um objeto C#.
Serializar um objeto para JSON usando JsonSerializer.Serialize
O JsonSerializer.Serialize
método é usado para converter um objeto em uma representação de cadeia de caracteres JSON. Isso é útil para salvar dados em arquivos, enviar dados por redes ou armazenar dados em bancos de dados. O Serialize
método usa um objeto como entrada e retorna uma cadeia de caracteres JSON.
O código a seguir demonstra como converter um objeto em uma cadeia de caracteres JSON usando JsonSerializer.Serialize
:
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
public class Employee
{
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
class Program
{
static void Main()
{
var customer = new Employee { Name = "Anette Thomsen", Age = 30, Address = "123 Main St" };
string jsonString = JsonSerializer.Serialize(customer);
Console.WriteLine(jsonString);
}
}
// Output: {"Name":"Anette Thomsen","Age":30,"Address":"123 Main St"}
Esse código define uma classe simples Employee
com propriedades para Name
, Age
e Address
. O JsonSerializer.Serialize
método é usado para converter uma instância da Employee
classe em uma cadeia de caracteres JSON. A saída é uma representação JSON do objeto, que pode ser facilmente armazenada ou transmitida.
Desserializar JSON para um objeto usando JsonSerializer.Deserialize
O JsonSerializer.Deserialize
método é usado para converter uma cadeia de caracteres JSON de volta em um objeto C#. A desserialização é útil para ler dados de arquivos, receber dados de APIs ou processar dados JSON em geral. O Deserialize
método usa uma cadeia de caracteres JSON e o tipo do objeto a ser criado como entrada e retorna uma instância desse objeto.
O código a seguir demonstra como converter uma cadeia de caracteres JSON de volta em um objeto usando JsonSerializer.Deserialize
:
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
public class Employee
{
public string Name { get; set; } = "Anette Thomsen";
public int Age { get; set; }
public string Address { get; set; } = "123 Main St";
}
class Program
{
static void Main()
{
string jsonString1 = "{\"Name\":\"Anette Thomsen\",\"Age\":30,\"Address\":\"123 Main St\"}";
string jsonString2 = @"{""Name"":""Anette Thomsen"",""Age"":30,""Address"":""123 Main St""}";
var customer = JsonSerializer.Deserialize<Employee>(jsonString2);
if (customer != null)
{
Console.WriteLine($"Name: {customer.Name}, Age: {customer.Age}, Address: {customer.Address}");
}
else
{
Console.WriteLine("Deserialization failed.");
}
}
}
// Output: Name: Anette Thomsen, Age: 30, Address: 123 Main St
Esse código define uma cadeia de caracteres JSON que representa um Employee
objeto. O JsonSerializer.Deserialize
método é usado para converter a cadeia de caracteres JSON de volta em uma instância da Employee
classe. O JsonSerializer.Deserialize
método é genérico, o que significa que você pode especificar o tipo de objeto que espera que a cadeia de caracteres JSON represente.
Nesse caso, especificamos Employee
como o parâmetro de tipo, permitindo que o método crie uma instância da Employee
classe com base nos dados JSON. O Deserialize
método retorna uma instância da Employee
classe. As propriedades do objeto desserializado podem ser acessadas diretamente, conforme mostrado no exemplo. Se a desserialização falhar (por exemplo, se a cadeia de caracteres JSON for inválida ou não corresponder à estrutura esperada), o método retornará nulo e você poderá lidar com esse caso de acordo.
Observe que a construção manual da cadeia de caracteres JSON requer caracteres de escape ou literais de cadeia de caracteres verbatim. O @
símbolo antes da cadeia de caracteres indica que é um literal de cadeia de caracteres verbatim. Literais de cadeia de caracteres verbatim permitem a formatação que algumas pessoas acham mais fácil de ler.
Resumo
Nesta unidade, você aprendeu a trabalhar com dados JSON em C# usando o System.Text.Json
namespace. Você explorou os conceitos de serialização e desserialização, que permitem converter objetos C# em cadeias de caracteres JSON e vice-versa. Você também examinou a JsonSerializer
classe, que fornece métodos para serializar e desserializar dados JSON. Você viu exemplos de como usar e Serialize
Deserialize
métodos para converter objetos em JSON e voltar, facilitando o trabalho com dados JSON em aplicativos C#. Entender esses conceitos é essencial para trabalhar com APIs, armazenamento de dados e intercâmbio de dados no desenvolvimento de software moderno.