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
Gestire i null nelle reactive form tipizzate di Angular
Creare alias per tipi generici e tuple in C#
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Verificare la provenienza di un commit tramite le GitHub Actions
Miglioramenti nell'accessibilità con Angular CDK
Specificare il versioning nel path degli URL in ASP.NET Web API
Eseguire una GroupBy per entity in Entity Framework
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Copiare automaticamente le secret tra più repository di GitHub
Utilizzare la libreria Benchmark.NET per misurare le performance