Nello script #84 abbiamo visto come sia semplice consumare servizi REST JSON grazie alle classi presenti nel namespace Windows.Data.Json.
In particolare abbiamo visto come JsonObject esponga dei metodi specifici per recuperare i valori di un oggetto in relazione al tipo, come ad esempio GetNamedString per le stringhe, GetNamedNumber per i double, GetNamedBoolean per i boolean e altri.
Tra questi metodi è assente quello per i DateTime: per questo tipo di dato dobbiamo procedere manualmente partendo dal valore in formato stringa.
Un DateTime serializzato in JSON assume un valore in formato stringa con la seguente struttura: /Date({milliseconds})/, dove {milliseconds} rappresentano i millisecondi dal 1 gennaio 1970, in UTC.
Per convertire tale valore in DateTime possiamo procedere come di seguito.
var client = new HttpClient(); var data = await client.GetStringAsync("{uri}"); var jsonObj = Windows.Data.Json.JsonObject.Parse(data); var lastupdateValue = jsonObj.GetNamedString("lastupdate"); var match = Regex.Match(lastupdateValue, @"/Date\((?<milliseconds>-?\d*)\)/"); var milliseconds = Convert.ToInt64(match.Groups["milliseconds"].Value); var lastupdateDate = new DateTime(1970, 1, 1).AddMilliseconds(milliseconds);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sfruttare lo streaming di una chiamata Http da Blazor
Utilizzare i primary constructor in C#
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Usare lo spread operator con i collection initializer in C#
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Utilizzare le collection expression in C#
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Sostituire la GitHub Action di login su private registry
Installare le Web App site extension tramite una pipeline di Azure DevOps