Il web 2.0 ha portato alla ribalta tecnologie presenti ormai da molti anni, ma che non hanno mai trovato un impiego così massiccio come invece è avvenuto negli ultimi tempi. Tra queste rientra senza dubbio JSON (JavaScript Object Notation) le cui origini provengono da Javascript per la dichiarazione di oggetti, ma è diventato indipendente e utilizzato per lo scambio di informazioni, in formato testuale tra client e server.
In AJAX questo strumento viene ampiamente utilizzato e spesso occorre quindi produrre delle stringhe JSON per restituirle al client. Il motore di serializzazione introdotto insieme a WCF è già in grado, fin dalla versione 3.0, di convertire oggetti in XML o in binario, ma con la versione 3.5 sp1 è stato introdotto per questo scopo la classe DataContractJsonSerializer che, basandosi sullo stesso sistema di identificazione di proprietà e campi, permette di produrre JSON.
Ecco quindi un semplice utilizzo di questa classe per serializzare la classe Product:
class Program
{
static void Main(string[] args)
{
// Creo l'entità da serializzare
Product p = new Product
{
ID = 1,
Name = "test",
};
using (MemoryStream stream = new MemoryStream())
{
// Serializzatore JSON
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Product));
serializer.WriteObject(stream, p);
stream.Position = 0;
// Converto lo stream in stringa
string json = Encoding.Default.GetString(stream.GetBuffer());
Console.WriteLine(json);
}
}
}
[DataContract()]
public class Product
{
public int ID { get; set; }
[DataMember()]
public string Name { get; set; }
}Eseguendo il codice ciò che si ottiene è {"Name":"test"}. Come per il normale serializzatore DataContractSerializer, anche per JSON è possibile utilizzare gli attributi DataContract e DataMember per indicare quali classi e proprietà serializzare (se omesso tutti i membri pubblici sono serializzabili).
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare noopener e noreferrer nei link HTML
Gestione opzioni colonna nella Blazor QuickGrid
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina
Modificare lo stile in una QuickGrid Blazor
Applicare il progressive enhancement in applicazioni web
Utilizzare AbortController per cancellare operazioni asincrone in JavaScript
Operazioni tra insiemi di array in Javascript
Evitare memory leaks nelle closure JavaScript
Creare una cache temporanea in JavaScript
Gestire gli errori nelle Promise JavaScript con try()
Implementare il throttle in JavaScript
Usare la parola chiave field per semplificare la scrittura di proprietà in C#


