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
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Utilizzare la libreria Benchmark.NET per misurare le performance
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Implementare il throttling in ASP.NET Core
Load test di ASP.NET Core con k6
Short-circuiting della Pipeline in ASP.NET Core
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Eseguire operazioni con timeout in React
Generare file per il download da Blazor WebAssembly
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
I più letti di oggi
- Impostare un elemento come ridimensionabile tramite CSS
- Proteggersi dagli attacchi di Open Redirect in ASP.NET Core MVC
- Personalizzare l'errore del rate limiting middleware in ASP.NET Core
- Accedere alla console di una Azure Container App
- Modificare i metadati nell'head dell'HTML di una Blazor Web App
- Gli oggetti CallOut di Expression Blend 4.0
- SQL Server 2005 December CTP
- Sfruttare le nuove tipologie di input di HTML5 con ASP.NET 4.0
- Upload da una pagina web con Dundas Upload