100 % locale — i tuoi dati non lasciano mai il tuo browser

YAML in .properties — Java lo rilegge uguale

Appiattisci YAML in un file .properties di Java. L’escaping è già fatto: quello che Properties.load rilegge è esattamente ciò che hai messo.

Istantaneo Privato Zero cookie

Input YAML

Output Properties

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.

Domande frequenti

Perché la mia chiave è stata rifiutata come doppione?
Perché due percorsi diversi si sono appiattiti sullo stesso nome. Una chiave letterale `a.b` e un `a:` annidato con un `b:` sotto danno entrambe `a.b`, e un file .properties non sa distinguerle: `Properties.load` tiene l’ultima e l’altro valore sparisce. Anziché scegliere per te, la conversione si ferma e nomina la collisione.
Che cosa succede a un valore che inizia con uno spazio?
Lo spazio viene protetto come `\ `. Java salta i bianchi che seguono il separatore, quindi `chiave= x` si rilegge `x`, con gli spazi iniziali persi senza avviso. Proteggere il primo mantiene il valore intatto; i successivi e quelli finali non hanno bisogno di nulla.
Il file conserva i miei tipi?
No, e nessun .properties può. Tutto è testo: `true`, `42` e `null` tornano come le stringhe `"true"`, `"42"` e `""`. È chi legge a decidere che cosa significano. È il formato, non un limite di questa conversione.

Convertitori correlati