Gestire strutture Json con DataContractJsonSerializer in WinRT

di Alessio Leoncini, in WinRT,

JSON è diventato lo standard di fatto per la rappresentazione di strutture dati per la comunicazione tra sistemi eterogenei. Per tale ragione è stata inserita la classe DataContractJsonSerializer direttamente in WinRT, per semplificare la serializzazione e la deserializzazione degli oggetti.

Per la deserializzazione, ad esempio, il suo utilizzo è estremamente semplice:

private void MyMethod()
{
  var json = "{\"id\":\"1234\",\"name\":\"xxx\", \"description\":\"descriptionsssss\"}";

  var obj = new MyObject();
  using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
  {
    var ser = new DataContractJsonSerializer(obj.GetType());
    obj = ser.ReadObject(ms) as MyObject;
  }
}

[DataContract]
public class MyObject
{
  [DataMember(Name = "id", IsRequired = true)]
  public int Id { get; set; }

  [DataMember(Name = "name", IsRequired = true)]
  public string Name { get; set; }

  [DataMember(Name = "description", IsRequired = true)]
  public string Description { get; set; }
}

Con la stringa nel formato JSON, il metodo ReadObject di DataContractJsonSerializer può costruire l'oggetto elaborando il MemoryStream contenente i bytes della stringa stessa.

Le proprietà della classe che rappresenta l'oggetto che andiamo a deserializzare può essere decorata con gli attributi DataMember nei quali possiamo definire la corrispondenza tra la proprietà stessa ed il nodo JSON che ci si aspetta.

Commenti

Visualizza/aggiungi commenti

| 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