Il web 2.0 ha portato alla ribalta tecnologie presenti ormai da molti anni, ma che non hanno mai trovato un impiego così massiccio come invece è avvenuto negli ultimi tempi. Tra queste rientra senza dubbio JSON (JavaScript Object Notation) le cui origini provengono da Javascript per la dichiarazione di oggetti, ma è diventato indipendente e utilizzato per lo scambio di informazioni, in formato testuale tra client e server.
In AJAX questo strumento viene ampiamente utilizzato e spesso occorre quindi produrre delle stringhe JSON per restituirle al client. Il motore di serializzazione introdotto insieme a WCF è già in grado, fin dalla versione 3.0, di convertire oggetti in XML o in binario, ma con la versione 3.5 sp1 è stato introdotto per questo scopo la classe DataContractJsonSerializer che, basandosi sullo stesso sistema di identificazione di proprietà e campi, permette di produrre JSON.
Ecco quindi un semplice utilizzo di questa classe per serializzare la classe Product:
class Program { static void Main(string[] args) { // Creo l'entità da serializzare Product p = new Product { ID = 1, Name = "test", }; using (MemoryStream stream = new MemoryStream()) { // Serializzatore JSON DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Product)); serializer.WriteObject(stream, p); stream.Position = 0; // Converto lo stream in stringa string json = Encoding.Default.GetString(stream.GetBuffer()); Console.WriteLine(json); } } } [DataContract()] public class Product { public int ID { get; set; } [DataMember()] public string Name { get; set; } }
Eseguendo il codice ciò che si ottiene è {"Name":"test"}. Come per il normale serializzatore DataContractSerializer, anche per JSON è possibile utilizzare gli attributi DataContract e DataMember per indicare quali classi e proprietà serializzare (se omesso tutti i membri pubblici sono serializzabili).
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sottoscrizione agli eventi sul contenitore in JavaScript
Utilizzo di Set e Array in JavaScript
Migliorare la scalabilità di ASP.NET Core 7 grazie all'output cache
3 metodi JavaScript che ogni applicazione web dovrebbe contenere - Parte 2
Utilizzare il tag HTML template
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Sfruttare la local cache del browser tramite gli ETag in ASP.NET Core
Cache policy su route groups di Minimal API in ASP.NET Core 7
Taggare la output cache in base al routing in ASP.NET Core
Catturare la telemetria degli eventi di output cache in ASP.NET Core
Definire le impostazioni di cache a livello di controller in ASP.NET Core 7
Gestire tipi complessi in query string grazie a IParsable in ASP.NET Core 7.0