JSON è diventato lo standard di fatto per la rappresentazione di strutture dati per la comunicazione tra sistemi eterogenei. Per tale ragione è stata inserita la classe DataContractJsonSerializer direttamente in WinRT, per semplificare la serializzazione e la deserializzazione degli oggetti.
Per la deserializzazione, ad esempio, il suo utilizzo è estremamente semplice:
private void MyMethod() { var json = "{\"id\":\"1234\",\"name\":\"xxx\", \"description\":\"descriptionsssss\"}"; var obj = new MyObject(); using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) { var ser = new DataContractJsonSerializer(obj.GetType()); obj = ser.ReadObject(ms) as MyObject; } } [DataContract] public class MyObject { [DataMember(Name = "id", IsRequired = true)] public int Id { get; set; } [DataMember(Name = "name", IsRequired = true)] public string Name { get; set; } [DataMember(Name = "description", IsRequired = true)] public string Description { get; set; } }
Con la stringa nel formato JSON, il metodo ReadObject di DataContractJsonSerializer può costruire l'oggetto elaborando il MemoryStream contenente i bytes della stringa stessa.
Le proprietà della classe che rappresenta l'oggetto che andiamo a deserializzare può essere decorata con gli attributi DataMember nei quali possiamo definire la corrispondenza tra la proprietà stessa ed il nodo JSON che ci si aspetta.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare i primary constructor in C#
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Come migrare da una form non tipizzata a una form tipizzata in Angular
Implementare l'infinite scroll con QuickGrid in Blazor Server
Utilizzare le collection expression in C#
Miglioramenti agli screen reader e al contrasto in Angular
Reactive form tipizzati con modellazione del FormBuilder in Angular
Utilizzare Tailwind CSS all'interno di React: primi componenti
Utilizzare il trigger SQL con le Azure Function
Paginare i risultati con QuickGrid in Blazor
Elencare le container images installate in un cluster di Kubernetes
Registrare servizi multipli tramite chiavi in ASP.NET Core 8