JavaScript utilizza il metodo statico parse della classe JSON per parsare una stringa JSON e trasformarla in un oggetto. Questo metodo analizza anche il tipo del campo (numero, stringa booleano) creando poi una proprietà dello stesso tipo quando crea l'oggetto. Questo discorso non vale però per le date in quanto queste vengono serializzate come stringhe e quindi il parser le tratta come tali quando va a creare l'oggetto. Tuttavia possiamo personalizzare il comportmento di JSON.parse passando in input non solo la stringa JSON, ma anche un callback che il metodo invoca per ogni proprietà. Il callback accetta in input la proprietà e deve restituire in output il controvalore che verrà aggiunto nell'oggetto. Sfruttando questo callback possiamo analizzare il valore dei campi di tipo string e se hanno il formato della data possiamo trasformarli in un oggetto Date di JavaScript e restituirlo.
JSON.parse(json, callback);
callback(key, value) {
// se non è una stringa torna il valore originale
if (typeof value !== 'string') {
return value;
}
// se ha il formato di una data ma è al valore minimo consentito torna null
if (value === '0001-01-01T00:00:00') {
return null;
}
// se non ha il formato di una data torna il valore originale
const match = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
if (!match) {
return value;
}
// se ha il formato di una data crea l'oggetto date e lo torna
return new Date(value);
}Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Dallo sviluppo locale ad Azure con .NET Aspire
Raggruppare risorse in .NET Aspire
Evidenziare una porzione di testo in un pagina dopo una navigazione
Gestione ciclo di vita in .NET Aspire
Definire il metodo di rilascio in .NET Aspire
Collegare applicazioni server e client con .NET Aspire
Introduzione ai web component HTML
Integrare SQL Server in un progetto .NET Aspire
Ricevere notifiche sui test con Azure Load Testing
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Definire il colore di una scrollbar HTML tramite CSS
Gestire il routing HTTP in Azure Container App
I più letti di oggi
- Inserire le news di Punto Informatico nel proprio sito
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Gli oggetti CallOut di Expression Blend 4.0
- Sfruttare una CDN con i bundle di ASP.NET
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable


