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.