Quando creiamo applicazioni non web (console, MAUI, WPF, servizi windows e così via) spesso abbiamo la necessità di invocare web api. Le web api serializzano e deserializzano i JSON di input e output sfruttando la libreria System.Text.Json con dei settings predefiniti che vengono creati in fase di creazione dell'host dell'applicazione. Quando deserializziamo dobbiamo serializzare e deserializzare i payload JSON da applicazioni non web, dobbiamo applicare gli stessi settings per non incorrere in errori dovuti.
Sebbene questi settings siano abbastanza semplici, dobbiamo documentarci per scoprire quali siano e in ogni applicazione dobbiamo crearci un'istanza e riusarla in ogni punto in cui si invoca una api. Con .NET 9 abbiamo a disposizione l'istanza singleton JsonSerializerOptions.Web che contiene esattamente gli stessi settings di ASP.NET e che possiamo direttamente usare nel nostro codice.
var payload = new Person { Id = 42, Nome = "Stefano Mostarda" };
var serialized = JsonSerializer.Serialize(payload, JsonSerializerOptions.Web);
Console.WriteLine(serialized);
// stampa { "Id": 42, "Nome": "Stefano Mostarda" }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Configurare e gestire sidecar container in Azure App Service
.NET Conference Italia 2024
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Ordine e importanza per @layer in CSS
Utilizzare una qualunque lista per i parametri di tipo params in C#
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Ottenere un token di accesso per una GitHub App
Referenziare un @layer più alto in CSS
Applicare un filtro per recuperare alcune issue di GitHub
Escludere alcuni file da GitHub Secret Scanning
I più letti di oggi
- Utilizzare il lock di oggetti con il .NET Framework
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- Effettuare il refresh dei dati di una QuickGrid di Blazor
- .NET Conference Italia 2022 - Track in presenza - Milano
- Chiamare direttamente un numero di telefono con HTML5