Gestire eventi di serializzazione e deserializzazione in .NET con System.Text.Json

di Stefano Mostarda, in .NET Framework,

A partire da .NET 6, abbiamo a disposizione quattro nuove interfacce che possono essere sfruttate per scrivere codice prima e dopo la serializzazione e la deserializzazione di un oggetto. Queste interfacce sono:

  • IJsonOnDeserialized: dichiara il metodo OnDeserialized invocato dopo che la classe è stata deserializzata;
  • IJsonOnDeserializing: dichiara il metodo OnDeserializing invocato prima che la classe venga deserializzata;
  • IJsonOnSerialized: dichiara il metodo OnSerialized invocato dopo che la classe è stata serializzata;
  • IJsonOnSerializing: dichiara il metodo OnSerializing invocato prima che la classe venga serializzata.

Una classe può implementare una o più interfacce e quando il processo di serializzazione o deserializzazione parte, la libreria System.Text.Json verifica se queste sono state implementate ed eventualmente ne invoca i metodi. Nel prossimo esempio vediamo come usare questi metodi per validare i dati di un oggetto prima della serializzazione e dopo la deserializzazione.

class Person : IJsonOnDeserialized, IJsonOnSerializing
{
    public int Id { get; set; }

    public string? Name { get; set; }

    void IJsonOnDeserialized.OnDeserialized() => Validate();
    void IJsonOnSerializing.OnSerializing() => Validate();

    private void Validate()
    {
        if (Name is null)
        {
            throw new InvalidOperationException("Name is null.");
        }
    }
}

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi