Use JsonSerializer.Serialize/Deserialize com JsonSerializerOptions para controlar output: camelCase, ignorar nulls, enum como string, reference handling e formatacao de datas. Decore models com [JsonPropertyName], [JsonIgnore], [JsonInclude], [JsonConstructor].

Fluxo de Serialization

C# Objectrecord, classSerializeJsonSerializerJSON string{"name":"Ada"}DeserializeJsonSerializerC# Objectrecord, class

O que e Serialization?

Serialization converte um objeto C# em uma representacao transferivel (JSON, XML, binario). Deserialization faz o caminho inverso β€” reconstroi o objeto a partir da representacao.

AspectoSerializeDeserialize
DirecaoObjeto β†’ JSON stringJSON string β†’ Objeto
MetodoJsonSerializer.Serialize(obj)JsonSerializer.Deserialize<T>(json)
AsyncSerializeAsync(stream, obj)DeserializeAsync<T>(stream)
Quando usarEnviar via HTTP, salvar em disco, message queueReceber via HTTP, ler de arquivo, consumir mensagem

Atributos principais

AtributoO que fazExemplo
[JsonPropertyName]Renomeia a propriedade no JSON[JsonPropertyName("id")] β†’ "id"
[JsonIgnore]Exclui a propriedade do JSONCampos internos, secrets
[JsonInclude]Inclui campo com setter privadoPropriedades com private set
[JsonConstructor]Marca o construtor para deserializeTipos imutaveis
[JsonConverter]Registra converter por tipo[JsonConverter(typeof(DateOnlyConverter))]
[JsonPolymorphic]Habilita polimorfismo (.NET 7+)Discriminator + tipos derivados
System.Text.Json vs Newtonsoft?
System.Text.Json e o default do .NET Core 3+. Vantagens: melhor performance (ate 2x mais rapido), menor alocacao de memoria, integrado ao ASP.NET Core pipeline (sem dependencia extra), suporta Utf8JsonReader/Writer de baixo nivel. Newtonsoft tem mais features legacy (LINQ-to-JSON com JObject, converters mais flexiveis, [JsonProperty], reference handling nativo), mas e mais lento e requer pacote NuGet. Para projetos novos, prefira System.Text.Json. Migre de Newtonsoft quando possivel.