#157 - Serializzare e deserializzare in JSON con DataContractJsonSerializer
di Cristian Civera, in Windows Communication Foundation, 22 gennaio 2010
Archiviato in: .NET Framework, .NET Framework 3.0, .NET Framework 3.5, AJAX, ASP.NET, ASP.NET 3.5, ASP.NET AJAX, Javascript, jQuery, Windows Communication Foundation
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
-
Real Code Conference 4 il 25 maggio a Firenze: ASP.NET 4.0, servizi web 2.0, Silverlight 4.0 e Windows Phone 7
-
Scopri i nostri nuovi libri su ASP.NET 4.0, C# 4 e Visual Basic 2010: in offerta lancio al 20% di sconto!
-
#1019 - Validazione dell'input lato client con ASP.NET MVC
-
#132 - Utilizzare una funzione come corpo di una lambda in LINQ to Objects
-
#1016 - Trasformazione di Web.Config in Visual Studio 2010
-
#151 - Disabilitare Aero programmaticamente per incrementare le performance di WPF
-
MonoTouch in versione 1.0: C# per iPhone diventa realtà
-
#vs 2010 e #netfx 4 beta 2 in dowload per tutti su http://u.aspitalia.com/bz Il nostro speciale è su http://u.aspitalia.com/bq
-
RT @brada Windows API Code Pack for #netfx http://u.aspitalia.com/d
-
Tutto per portarsi ASP.NET 4.0, Silverlight 4.0 e .NET Framework 4.0 sotto l'ombrellone
-
#180 - Generare classi POCO con Entity Framework 4.0
-
La piattaforma Microsoft per il cloud computing: Windows Azure

Commenti
mi piace
non mi piace
Facebook
Twitter










