Serializzare e deserializzare in JSON con DataContractJsonSerializer

di , in 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

Visualizza/aggiungi commenti

Serializzare e deserializzare in JSON con DataContractJsonSerializer (#157)
| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi