Ir para o conteúdo

Exemplos Serialização e Deserialização

Classe base para os exemplos:

    public class Sale
    {


        public Sale(int id, string product, decimal price, DateTime saleDate)
        {
            Id = id;
            Product = product;
            Price = price;
            SaleDate = saleDate;
        }

        public int Id { get; set; }
        [JsonProperty("name_product")] // atributos (Podemos atribuir metadados para classes e propriedades)
        public string Product { get; set; }
        public decimal Price { get; set; }
        public DateTime SaleDate { get; set; } = DateTime.Now;
    }

Exemplo 1: Serialização

// Criação de objetos para serialização
DateTime now = DateTime.Now; // ISO 8601 (Padroniza a representação de datas entre sistemas)

Sale sale1 = new Sale(1, "Tennis", 125.00M, now);
Sale sale2 = new Sale(2, "Boots", 199.00M, now);

// Serialização de um objeto
string serialized = JsonConvert.SerializeObject(sale1, Formatting.Indented);

Console.WriteLine(serialized);
File.WriteAllText("sale.json", serialized);

// Serialização de uma Coleção
List<Sale> sales = new List<Sale>();
sales.Add(sale1);
sales.Add(sale2);

string salesJson = JsonConvert.SerializeObject(sales, Formatting.Indented);

Console.WriteLine(salesJson);
File.WriteAllText("sales.json", salesJson);

Exemplo 2: Deserialização

Exemplo: Deserialização de um objeto

string serializedSale = File.ReadAllText("sale.json");
Sale? sale = JsonConvert.DeserializeObject<Sale>(serializedSale);

if (sale is not null)
{
    Console.WriteLine($"ID: {sale.Id}, Product: {sale.Product}, Price: {sale.Price}, Date: {sale.SaleDate.ToString("dd/MM/yyyy HH:mm")}");
}

Exemplo: Deserialização de uma Lista de Objetos

    string serializedSale = File.ReadAllText("sales.json");
    List<Sale>? salesList = JsonConvert.DeserializeObject<List<Sale>>(serializedSale);

    if (salesList is not null)
    {
        foreach (Sale sale in salesList)
        {
            Console.WriteLine($"ID: {sale.Id}, Product: {sale.Product}, Price: {sale.Price}, Date: {sale.SaleDate.ToString("dd/MM/yyyy HH:mm")}");
        }
    }

Os nomes dos campos devem ser iguais, ou seja, os campos dentro do arquivo json devem ser iguais aos atributos da classe, caso contrário ele não consegue fazer a correspondência, e assim o campo no objeto ficará sem valor.

Arquivos JSON

Exemplo com um objeto:

{
  "Id": 1,
  "name_product": "Sapato",
  "Price": 99.00,
  "SaleDate": "2025-09-13T15:53:24.831049-03:00"
}

Exemplo com uma lista de objetos:

[
  {
    "Id": 1,
    "name_product": "Tennis",
    "Price": 125.00,
    "SaleDate": "2025-09-13T15:53:24.831049-03:00"
  },
  {
    "Id": 2,
    "name_product": "Boots",
    "Price": 199.00,
    "SaleDate": "2025-09-13T15:53:24.831049-03:00"
  }
]