Una delle regole auree dei formati di trasmissione dati è quella di essere il più compatti possibile così da far viaggiare un basso volume di dati e aumentare la velocità di trasferimento. JSON è un formato che rispecchia questa indicazione, ma possiamo ulteriormente migliorare i payload JSON creati con la libreria System.Text.Json eliminando alcune proprietà o eliminando quelle che hanno impostato il valore di default del tipo loro tipo. Prendiamo come esempio la seguente classe Person.
public class Person { public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } public List<string> Children { get; set; } }
Quando andiamo a serializzare un'istanza di Person in JSON, tutte le proprietà vengono serializzate anche se non è sempre necessario. Ad esempio, se la proprietà Age non fosse impostata, il suo valore sarebbe 0 e questo sarebbe il valore serializzato. Tuttavia se non serializziamo la proprietà Age in fase di deserializzazione il valore di Age sarebbe comunque 0, quindi potremmo dire che se la proprietà Age contiene il valore di default, possiamo evitare di includerla nel JSON. Questo discorso è applicabile a qualunque tipo di proprietà.
public class Person { [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public string FirstName { get; set; } [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public string LastName { get; set; } [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] public int Age { get; set; } [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] public DateOfBirth { get; set; } [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public List<string> Children { get; set; } }
In questo caso, specifichiamo che le proprieta FirstName e LastName non sono mai ignorate (impostazione di default), le proprietà Age e DateOfBirth vengono serializzate solo se hanno un valore diverso dal default del loro tipo (rispettivamente 0 e 01/01/01), la proprietà Children non viene serializzata se è null.
Grazie a queste impostazioni, possiamo ridurre le dimensioni del payload JSON serializzato e migliorare così le performance della nostra applicazione.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Creare una libreria CSS universale: Nav menu
Generare una User Delegation SAS in .NET per Azure Blob Storage
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Utilizzare WhenEach per processare i risultati di una lista di task
Configurare e gestire sidecar container in Azure App Service
Utilizzare Intersect e Except per filtrare set di dati in TSql
Utilizzare DeepSeek R1 con Azure AI
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Gestione file Javascript in Blazor con .NET 9
Introduzione alle Container Queries
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- .NET Conference Italia 2025 - Milano
- Gestione ciclo di vita in .NET Aspire
- The Agentic Day - Milano
- Gestione CSS in Blazor con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestione file Javascript in Blazor con .NET 9
- Inviare un'e-mail con ASP.NET