100 % local — seus dados nunca saem do seu navegador

YAML para .properties — o Java relê igual

Achate YAML num arquivo .properties do Java. O escape já vem feito: o que o Properties.load relê é exatamente aquilo que você colocou.

Instantâneo Privado Zero cookies

Entrada YAML

Saída Properties

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.

Perguntas frequentes

Por que minha chave foi recusada como duplicada?
Porque dois caminhos diferentes se achataram no mesmo nome. Uma chave literal `a.b` e um `a:` aninhado com `b:` dentro dão ambas `a.b`, e um arquivo .properties não sabe distingui-las: `Properties.load` fica com a última e o outro valor some. Em vez de escolher por você, a conversão para e nomeia a colisão.
O que acontece com um valor que começa por espaço?
O espaço é escapado como `\ `. O Java pula os brancos que seguem o separador, então `chave= x` volta como `x`, com os espaços iniciais perdidos sem aviso. Escapar o primeiro mantém o valor intacto; os seguintes e os finais não precisam de nada.
O arquivo conserva meus tipos?
Não, e nenhum .properties pode. Tudo é texto: `true`, `42` e `null` voltam como as strings `"true"`, `"42"` e `""`. Quem lê decide o que significam. É o formato, não um limite desta conversão.

Conversores relacionados