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
Creare una libreria CSS universale: Immagini
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Creare una libreria CSS universale: Cards
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Creare una custom property in GitHub
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Gestione dei nomi con le regole @layer in CSS
Eseguire una query su SQL Azure tramite un workflow di GitHub
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Migrare una service connection a workload identity federation in Azure DevOps
Estrarre dati randomici da una lista di oggetti in C#
I più letti di oggi
- Pubblicare immagini Docker su un registro privato di Azure
- Spegnere automaticamente ogni giorno una VM Azure
- Moonlight 2.0 in beta, con un po' di Silverlight 3.0 per Linux
- Impostare un promemoria per ruotare le chiavi di Azure Storage
- Routing HTTP con i proxy delle Azure Function
- Effettuare il download di un file via FTP con la libreria FluentFTP di .NET