Due delle operazioni più comuni di un'applicazione sono quelle di serializzare un oggetto in una stringa JSON e di eseguire l'operazione opposta. La libreria JSON.NET svolge un ottimo compito in questo senso, ma Microsoft ha deciso di rilasciare una propria libreria all'interno di .NET Core: System.Text.Json. Sebbene questa nuova libreria sia ancora giovane e meno potente rispetto a JSON.NET, è facile prevedere che Microsoft continuerà ad arricchirla di funzionalità e a migliorarne le performance. Per questo motivo, in questo script vedremo come creare due extension method per eseguire i task di serializzazione e deserializzazione usando System.Text.Json.
La prima cosa da fare è importare da NuGet la libreria System.Text.Json. Una volta effettuata quest'operazione possiamo usare l'oggetto JsonSerializer e i suoi metodi statici Serialize e Deserialize<T>. Come si intuisce dai nomi, il primo serializza un oggetto in una stringa JSON, mentre il secondo deserializza una stringa nell'oggetto specificato dal parametro T. Possiamo usare questi metodi all'interno dei seguenti extension method.
public static string ToJson(this object input) { if (input == null) return String.Empty; return JsonSerializer.Serialize(input); } public static T FromJson<T>(this string input) { if (input == null) return default; return JsonSerializer.Deserialize<T>(input); }
Grazie a questi extension method, il codice necessario a serializzare e deserializzare diventa estremamente semplice.
var person = new Person { Id = 1, FirstName = "Stefano", LastName = "Mostarda" }; var json = person.ToJson(); //serializza l'oggetto in json var deserialized = json.Deserialize<Person>(); //deserializza la stringa in un oggetto Person
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare il multibinding in un'applicazione Xamarin Forms
Modificare il behavior del controllo SwipeView in Xamarin Forms
Creare automaticamente una relazione padre-figlio tra work item in Azure DevOps
Realizzare un oggetto DataList generico in Blazor
Creare una direttiva per assegnare gli stili a un controllo in Angular
Testare le impostazioni CORS di un'applicazione ASP.NET Core
PWAConf 2020
Eseguire integration test di un progetto ASP.NET Core
Modificare la modalità di esecuzione delle query con Include in Entity Framework Core 5
Restituire il correlation ID in caso di errore in ASP.NET Core Web API
Tenere traccia di tutte le modifiche ai dati con Entity Framework Core
Creare API GraphQL con ASP.NET Core e HotChocolate
I più letti di oggi
- Abilitare il drag&drop delle righe di una tabella in Angular
- Indicizzare Cosmos DB con Azure Search
- Utilizzare il CSS Grid Model per creare il layout di un sito
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Esecuzione condizionale dei task nelle pipeline YAML di Azure DevOps
- Creare un web server locale con LiveReload