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
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Gestire progetti NPM in .NET Aspire
Definire il colore di una scrollbar HTML tramite CSS
Utilizzare una qualunque lista per i parametri di tipo params in C#
Integrare OpenAI tramite Aspire
Gestire progetti .NET + React in .NET Aspire
Introduzione ai web component HTML
Managed deployment strategy in Azure DevOps
Eliminare una project wiki di Azure DevOps
Gestire il routing HTTP in Azure Container App
Gestire gli errori nelle Promise JavaScript con try()
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
I più letti di oggi
- .NET Conference Italia 2025 - Milano
- The Agentic Day - Milano
- Analizzare il contenuto di una issue con GitHub Models e AI
- Internet Explorer 7 diventa plus
- Ottimizzare l'utilizzo della CPU in ASP.NET Core con MiniProfiler
- Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
- Tutti i bug di ASP.NET