Windows Phone Tips & Tricks. Cómo serializar un objeto a un fichero Json y deserializarlo

[Nota: Este artículo pertenece a la serie de Windows Phone Tips & Tricks de MSDN España]

Hola,

De la misma manera que en nuestras apps de Windows Phone podemos serializar un objeto a un fichero XML y deserializarlo después, podemos serializar un objeto a un fichero Json y deserializarlo con un código muy similar. Esta es una clase como la que estoy usando en mi última app para Windows Phone 8:

using System.IO;
using System.IO.IsolatedStorage;
using System.Runtime.Serialization.Json;
using System.Xml.Serialization;

namespace MyApp.Services
{
    public class StorageService
    {
        // Constructor
        public StorageService()
        {
        }

        // Deserializa un objeto de un fichero
        public T Load<T>(string fileName)
        {
            // Accede al Isolated Storage
            using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (!myIsolatedStorage.FileExists(fileName))
                {
                    // El fichero no existe.
                    return default(T);
                }

                // El fichero existe. Ábrelo
                using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile(fileName, FileMode.Open))
                {
                    // Deserializa el contenido
                    DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
                    T data = (T)json.ReadObject(stream);
                    return data;
                }
            }
        }

        // Serializa un objeto a fichero
        public void Save<T>(string fileName, T data)
        {
            // Accede al Isolated Storage
            using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                // Crea un fichero para el contenido
                using (IsolatedStorageFileStream fileStream = myIsolatedStorage.CreateFile(fileName))
                {
                    // Serializa el objeto al fichero
                    DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
                    json.WriteObject(fileStream, data);
                }
            }
        }
    }
}

Esta clase se usa de la misma manera que la versión equivalente para XML.

Nota: si en la clase del objeto que estás serializando hay alguna propiedad que no quieras o puedas serializar, utiliza el atributo [IgnoreDataMember] para que no sea tenida en cuenta.

Espero que te sea de utilidad.

Un saludo,

Alejandro Campos Magencio (@alejacma)

PD: Mantente informado de todas las novedades de Microsoft para los desarrolladores españoles a través del Twitter de MSDN, el Facebook de MSDN, el Blog de MSDN y la Newsletter MSDN Flash.

About these ads

4 pensamientos en “Windows Phone Tips & Tricks. Cómo serializar un objeto a un fichero Json y deserializarlo

  1. Pingback: Tips & Tricks de desarrollo para Windows Phone - MSDN España - Site Home - MSDN Blogs

  2. Pingback: Windows Phone Tips & Tricks. Windows Phone Tips & Tricks. Cómo serializar un objeto a un fichero Json en SkyDrive y deserializarlo | ¡Desarrolladores, desarrolladores, desarrolladores!

  3. Pingback: Windows Phone Tips & Tricks. Cómo serializar un objeto a un fichero Json en SkyDrive y deserializarlo | ¡Desarrolladores, desarrolladores, desarrolladores!

  4. Pingback: Windows Phone Tips & Tricks. Cómo actualizar el Live Tile principal de mi app | ¡Desarrolladores, desarrolladores, desarrolladores!

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s