Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Serializzazione JSON nelle Windows Store app

Se avete qualche volta sviluppato app per Windows 8.1 e Windows Phone 8.1, oppure vi state preparando al meraviglioso mondo delle Universal app con Windows 10, certamente vi sarà capitata la necessità di serializzare dei dati.

Le tecniche di serializzazione possono essere varie, sebbene in Windows 10 poi ci sarà qualche differenza, ad ogni modo utilizzando le classi .NET o di WinRT può essere più complesso del dovuto.

Una buona idea può essere quella di usare la serializzazione JSON, un formato standard per lo scambio dei dati. A tale riguardo, è possibile utilizzare una libreria chiamata Newtonsoft.Json, scaricabile tramite NuGet ed è molto utile soprattutto nelle Windows Store app.

Supponiamo di avere un progetto di app per Windows 8.1, Windows Phone 8.1 o Windows 10 (con VS 2015 RC). Con NuGet, scarichiamo la libreria nella sua "stable release":



Dopo aver installato la libreria, si avranno a disposizione diverse classi, ma la più comoda si chiama JsonConvert. Tale classe espone due semplici metodi, SerializeObject e DeserializeObject. Il primo metodo consente di serializzare oggetti di qualsiasi tipo e il risultato della serializzazione è un tipo String. Si usa essenzialmente in questo modo:

        'Esempio di oggetto da serializzare

        
Dim anObject As New List(Of String)
        anObject.Add(
"One")
        anObject.Add(
"Two")

        
'Richiede Imports Newtonsoft.Json
        
Dim sessionData = JsonConvert.SerializeObject(anObject)

        
'Crea un file locale
        
Dim folder As StorageFolder =
                ApplicationData.Current.LocalFolder
        
Dim newFile = Await folder.
                CreateFileAsync(
"Data.bin",
                                CreationCollisionOption.ReplaceExisting)

        
'Scrive l'oggetto serializzato nel file
        Await FileIO.WriteTextAsync(newFile, sessionData)
Il codice di cui sopra non fa altro che serializzare la collection e salvarla in un file locale. Notate come l'oggetto restituito dalla serializzazione sia String. Deserializzare un oggetto è altrettanto semplice. Il metodo DeserializeObject ha due overload, uno non generico e uno generico (DeserializeObject(Of T)).  E' proprio quest'ultimo che utilizziamo per recuperare la collection originaria, con questo semplice codice:

        Dim file = Await ApplicationData.
                       Current.LocalFolder.GetFileAsync(
"Data.bin")

        
'Il risultato ottenuto è la collection originaria
        
Dim data = JsonConvert.DeserializeObject(Of List(Of String
)) _
            (Await FileIO.ReadTextAsync(file))


Non è di certo difficile capire come questa libreria semplifichi la vita nel serializzare/deserializzare oggetti, soprattutto se avete mai usato altre tecniche per farlo, come per esempio con gli stream. E' importante ricordare che, almeno con le build attuali, se sperimentate su Windows 10 dovete selezionare la ultima "stable release".

Alessandro

Print | posted on mercoledì 10 giugno 2015 21:42 | Filed Under [ UWP e Windows Store Apps ]

Powered by:
Powered By Subtext Powered By ASP.NET