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
A lap around Azure Cognitive Services
Creare template HTML con Slim
Point-in-time restore con gli Azure Storage Blob
Personalizzare gli elementi del controllo SwipeView in Xamarin Forms
Pubblicare un'applicazione come singolo eseguibile con .NET Core 3
Uso dei design-time data nelle applicazioni della Universal Windows Platform
Utilizzare il CSS Grid Model per creare il layout di un sito
Migrare da Entity Framework 6 ad Entity Framework Core 5
Gestire un errore HTTP in Blazor mostrando un messaggio in popup
Dimensionare dinamicamente una TextArea in Blazor
Eseguire una chiamata asincrona durante la validazione di una form in Blazor
Disabilitare un pulsante in Blazor durante il salvataggio
I più letti di oggi
- Blazor Conference 2021 - Online
- Track 1: @dbochicchio e @cristiancivera con 'Blazor for absolute beginners'Track 2: @apomic80 con 'Dynamic UI with Blazor WebAssembly'Track 3: #aspilive Seguici live su => https://aspit.co/BlazorConf-21
- Track 1: @GiampaoloTUCCI con 'Progressive Web Apps with Blazor'Track 2: @dottor con 'Blazor Tips&Tricks'Track 3: #aspilive Seguici live su => https://aspit.co/BlazorConf-21
- Track 1: @cristiancivera con 'Using Components in Blazor'Track 2: @crad77 con 'Blazor and ASP.NET Core with GraphQL and HotChocolate'Track 3: #aspilive Seguici live su => https://aspit.co/BlazorConf-21