O que esta ferramenta faz
O aninhamento vira pontos, as listas viram índices:
db:
host: db.example.com
port: 5432
hosts:
- a
- b
db.host=db.example.com
db.port=5432
hosts[0]=a
hosts[1]=b
A forma [i] é a convenção do Spring, a que a maioria dos leitores espera.
O escape é todo o trabalho
Um arquivo .properties é enganosamente simples, e três das suas regras comem dados em silêncio.
Um valor que começa por espaço. Properties.load pula os brancos depois do separador, então chave= x volta como x. O primeiro espaço é escapado — chave=\ x — e o valor sobrevive. Os espaços finais ficam como estão.
Uma chave que começa por # ou !. Essa linha é um comentário. A entrada inteira, chave e valor, some na leitura. Esses dois caracteres são escapados quando abrem uma chave.
=, : e os espaços dentro de uma chave também são escapados, e cada barra invertida igualmente. Uma quebra de linha num valor vira \n, uma tabulação \t.
Duas chaves que achatam no mesmo nome
"a.b": 1
a:
b: 2
As duas dão a.b. O formato não sabe distingui-las e Properties.load fica com a última: um dos seus dois valores teria sumido, sem nada que dissesse.
A conversão para e nomeia a chave. É o único caso em que esta ferramenta recusa em vez de converter, e é o caso em que converter mentiria.
Não existem tipos
Tudo num arquivo .properties é texto. true volta como "true", 42 como "42", e um null como valor vazio. Quem lê decide o que significam: Boolean.parseBoolean, Integer.parseInt, e uma decisão sobre o que quer dizer vazio.
Uma palavra sobre codificação
A saída é texto UTF-8, acentos inclusos. É o que o Java moderno lê, e o que Properties.load(Reader) sempre leu.
Mas Properties.load(InputStream) — a chamada mais antiga e mais comum — lê ISO-8859-1 e transformará café em algaravia. Se for esse o seu leitor, mude para a sobrecarga Reader ou escape os caracteres não ASCII como \uXXXX antes de enviar o arquivo.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.