Deserializzare le date nei servizi REST JSON nelle Windows Store app

di Alessio Leoncini, in WinRT 8.1,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi