Titolo, luogo, data e ora, fuso orario, ripetizione, invitati, avvisi e note; poi scarica il file .ics o aprilo direttamente nel calendario. Puoi anche incollare un programma o allegare un documento o una foto per creare più eventi insieme.
Cos'è jCal e in cosa differisce da un file .ics?
jCal è iCalendar scritto in JSON, standardizzato come RFC 7265 nel 2014. Contiene esattamente gli stessi dati di un file .ics — le stesse proprietà, parametri e componenti — in array annidati anziché in oggetti, perché un componente può ripetere una proprietà e l'ordine può essere significativo. Un calendario è ["vcalendar", [properties], [components]], ogni proprietà è [name, parameters, valueType, value], quindi SUMMARY:Standup diventa ["summary", {}, "text", "Standup"]. Non è la stessa cosa dello schema.org Event in JSON-LD, che descrive un evento per i motori di ricerca e ne conserva molto meno. ICS Maker scrive .ics e jCal a partire da un unico modello di evento anziché convertire l'uno nell'altro, così i due non possono essere in disaccordo su cosa sia l'evento.
La struttura
La RFC 7265 mappa iCalendar su array anziché su oggetti, perché in un calendario l'ordine e la ripetizione contano, e gli oggetti JSON non offrono né l'uno né l'altra. Un calendario è ["vcalendar", [properties], [components]], e ogni proprietà è [name, parameters, valueType, value] — il nome in minuscolo, i parametri un oggetto, il tipo uno dei tipi di valore della RFC 5545.
Così SUMMARY:Standup diventa ["summary", {}, "text", "Standup"], e un orario di inizio con fuso orario diventa ["dtstart", {"tzid":"Europe/London"}, "date-time", "2026-08-15T09:00:00"]. Qui le date-ora assumono la loro forma ISO, non quella compatta di iCalendar, e il fuso orario si sposta in un parametro.
Perché vale la pena averlo
iCalendar è un formato testuale con ripiegamento delle righe, regole di escape e terminazioni CRLF, e analizzarlo correttamente è più laborioso di quanto sembri. jCal consegna la stessa semantica — fusi orari, regole di ricorrenza, allarmi, partecipanti — a qualunque cosa parli già JSON, senza bisogno di scrivere un parser. È un compito diverso da quello di Event di schema.org, che questa pagina può generare anch'esso: JSON-LD descrive un evento per un motore di ricerca e appiattisce gran parte di ciò di cui un calendario ha bisogno.
Come questa pagina lo genera
Entrambi i formati vengono scritti a partire dallo stesso evento, non convertiti l'uno dall'altro. Un convertitore erediterebbe ogni decisione di escape dalla forma testuale, mentre i valori jCal sono esplicitamente non sottoposti a escape — JSON gestisce da sé le proprie virgolette. Scrivere entrambi a partire da un unico modello fa sì che non possano essere in disaccordo su cosa sia l'evento, ma solo su come viene scritto.
Domande
- Cos'è jCal?
- jCal è il formato JSON per iCalendar, standardizzato come RFC 7265 nel 2014. Rappresenta esattamente gli stessi dati di un file .ics — le stesse proprietà, parametri e componenti — usando array JSON annidati, così può essere convertito in entrambe le direzioni senza perdere significato.
- jCal è la stessa cosa di JSON-LD o di schema.org Event?
- No. jCal è una mappatura completa di iCalendar, quindi contiene regole di ricorrenza, fusi orari, allarmi e lo stato di partecipazione dei partecipanti. schema.org Event in JSON-LD è una descrizione di un evento per i motori di ricerca e altri lettori, e ne conserva deliberatamente molto meno. Questo builder genera entrambi, a partire dallo stesso evento.
- Perché jCal usa array invece di oggetti?
- Perché un componente di calendario può contenere più volte la stessa proprietà — più partecipanti, più date di eccezione — e l'ordine può essere significativo. Un oggetto JSON indicizzato per nome di proprietà non potrebbe rappresentare né l'uno né l'altro caso, per questo la RFC 7265 usa invece array posizionali.
- Cosa legge jCal?
- È un formato di nicchia, ben supportato nelle librerie di calendario JavaScript come ical.js e disponibile in diversi toolkit iCalendar lato server. Le applicazioni di calendario più diffuse si aspettano ancora file .ics, quindi usa jCal tra i tuoi sistemi e consegna alle persone il file .ics.