Che cosa fa questo strumento
L’annidamento diventa punti, gli elenchi diventano indici:
db:
host: db.example.com
port: 5432
hosts:
- a
- b
db.host=db.example.com
db.port=5432
hosts[0]=a
hosts[1]=b
La forma [i] è la convenzione di Spring, quella che la maggior parte dei lettori si aspetta.
L’escape è tutto il lavoro
Un file .properties è ingannevolmente semplice, e tre delle sue regole mangiano dati in silenzio.
Un valore che inizia con uno spazio. Properties.load salta i bianchi dopo il separatore, quindi chiave= x si rilegge x. Il primo spazio viene protetto — chiave=\ x — e il valore sopravvive. Gli spazi finali restano come sono.
Una chiave che inizia con # o !. Quella riga è un commento. L’intera voce, chiave e valore, sparisce alla lettura. Quei due caratteri vengono protetti quando aprono una chiave.
=, : e gli spazi dentro una chiave sono protetti anch’essi, e così ogni barra rovesciata. Un ritorno a capo in un valore diventa \n, una tabulazione \t.
Due chiavi che si appiattiscono nello stesso nome
"a.b": 1
a:
b: 2
Entrambe danno a.b. Il formato non sa distinguerle e Properties.load tiene l’ultima: uno dei tuoi due valori sarebbe sparito, senza nulla che lo dicesse.
La conversione si ferma e nomina la chiave. È l’unico caso in cui questo strumento rifiuta invece di convertire, ed è il caso in cui convertire mentirebbe.
Non esistono tipi
Tutto, in un file .properties, è testo. true torna come "true", 42 come "42", e un null come valore vuoto. È chi legge a decidere il significato: Boolean.parseBoolean, Integer.parseInt, e una decisione su che cosa voglia dire vuoto.
Una parola sulla codifica
L’uscita è testo UTF-8, accenti compresi. È ciò che legge il Java moderno, e ciò che Properties.load(Reader) ha sempre letto.
Ma Properties.load(InputStream) — la chiamata più vecchia e più diffusa — legge ISO-8859-1 e trasformerà café in caratteri incomprensibili. Se è il tuo lettore, passa all’overload Reader oppure proteggi i caratteri non ASCII come \uXXXX prima di spedire il file.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.