10

Sep

ServiceStack.Text una libreria da provare

Ciao a tutti,

come ben sappiamo ad oggi, soprattutto con l’avvento degli smartphone e quindi la necessità di dover sviluppare le app, l’utilizzo di servizi/API web è diventato sempre più massiccio. Proprio per questo vorrei parlarvi di una libreria semplice e veloce che ha come scopo principale quello di serializzare/deserializzare tipi in vari formati come xml, json, csv ecc…

Questa libreria fa parte di un progetto molto più grande dal nome Service Stack, che è un framework opensource usato per costruire servizi web di tipo REST (ma fa molto di più , ve lo garantisco Sorriso ).

Ho deciso di scrivere un post su questa libreria perché, oltre ad essere scritta molto bene (nei vari esempi vedremo come in una riga di codice facciamo tutto) è anche una delle più veloci in circolazione, come mostra questo grafico

Attualmente è disponibile solo per .NET e per Windows Phone, ma speriamo che in futuro lo diventi anche per WinRT e le PCL.

Per poter installare questa libreria abbiamo due possibilità:

  1. Tramite NuGet, cercando ServiceStack.Text (consigliato)
  2. Scaricarsi il codice sorgente da qui, compilarlo e usare la dll creata.

Una  volta aggiunta la referenza al nostro progetto, creiamo un tipo qualsiasi (nel nostro esempio chiamato Store) :

   1: [DataContract]
   2: public class Store
   3: {
   4:     [DataMember]
   5:      public int ID { get; set; }
   6:     [DataMember]
   7:      public string Name{get;set;
   8:  
   9: }
A questo punto creiamo una nuova istanza di Store e utilizziamo il metodo statico SerializeToString della classe JsonSerializer ( ma la procedura è identica anche per l’ XmlSerializer) per serializzare il nostro oggetto:
   1: //creo l'istanza di Store
   2: Store store = new Store()
   3:               {
   4:                   ID = 1,
   5:                   Name = "Test Store"
   6:               };
   7: //serializzo con 1 riga di codice :)
   8: string serializedStore = JsonSerializer.SerializeToString(store);
 

come ci possiamo immaginare il risultato sarà :

   1: {
   2:  "ID":1,
   3:  "Name":"Test Store"
   4: }

 

A questo punto non ci resta che fare il contrario, partire da una stringa json e ricavare il tipo Store, anche questo realizzabile con una sola riga, utilizzando il metodo statico DeserializeFromString

   1: var deserializedStore = JsonSerializer.DeserializeFromString(serializedStore);
   2:             
   3: Console.WriteLine(deserializedStore.Name);

Oltre alla possibilità di deserializzare passando una stringa possiamo anche utilizzare il metodo DeserializeFromStream passandogli uno stream.

Insomma, una libreria utile e versatile per molte esigenze… provatela e fatemi sapere cosa ne pensate Sorriso!

A presto

Carmine

by Carmine Punella on 9/10/2013
Post archive