Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Serializzazione JSON con ASP .NET

ASP .NET fornisce un oggetto con cui è possibile serializzare/deserializzare oggetti secondo lo standard JSON, il DataContractJsonSerlializer. Esso è contenuto nel namespace System.Runtime.Serialization.Json, ma per utilizzarlo si deve aggiungere al proprio progetto un riferimento all'assembly System.ServiceModel.Web.dll.

Ogni classe o struttura che si vuole serializzare deve essere decorata con l'attributo DataContract; al suo interno, i membri che interessano devono avere l'attributo DataMember. Ad esempio: 

[DataContract] public class ShoppingCart { [DataMember] public List<string> Articles { get; set; } [DataMember] public string UserName { get; set; } public ShoppingCart() { Articles = new List<string>(); } }

Fatto questo, l'utilizzo del DataContractJSonSerializer è molto semplice, dal momento che esso si comporta come un serializzatore standard. Le seguenti funzioni generiche consentono di serializzare e deserializzare un qualunque oggetto: 

public string Serialize<T>(T obj) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, obj); return Encoding.Default.GetString(ms.ToArray()); } } public T Deserialize<T>(string json) { T obj = Activator.CreateInstance<T>(); using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); obj = (T)serializer.ReadObject(ms); return obj; } }

Ad esempio, utilizzando la classe ShoppingCart definita sopra: 

ShoppingCart cart = new ShoppingCart(); cart.UserName = "Marco"; cart.Articles.Add("Fiat 500"); cart.Articles.Add("Mini"); //Serializza l'oggetto. string json = Serialize(cart); //Deserializza l'oggetto. ShoppingCart cart2 = Deserialize<ShoppingCart>(json);

Una cosa che ho trovato molto interessante è che questo oggetto supporta di default la serializzazione degli oggetti List<T>, che invece l'XmlSerializer non gestisce.

Technorati Tags: , , ,

Print | posted on Wednesday, October 22, 2008 2:02 PM | Filed Under [ C# ASP .NET ]

Feedback

Gravatar

# re: Serializzazione JSON con ASP .NET

Ottimo e grazie. Mi hai risolto un problema in 5 minuti
6/11/2010 9:26 AM | Davide
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET