100 % local — seus dados nunca saem do seu navegador

Properties para YAML — pronto para Spring Boot

Transforme um arquivo .properties do Java em YAML. As chaves pontuadas aninham e as indexadas viram listas: um application.yml pronto para commitar.

Instantâneo Privado Zero cookies
Indentação

Entrada Properties

Saída YAML

O que esta ferramenta faz

Um arquivo .properties vira YAML, com os pontos virando estrutura.

# serviço
app.name=Demo
app.port=8080
app.debug=true
app:
  name: Demo
  port: 8080
  debug: true

= e : separam igualmente uma chave do valor dela, as linhas de comentário começam com # ou !, e uma linha terminada em barra invertida continua na seguinte. Os escapes de um arquivo .properties — \:, \=, \n, \uXXXX — são decodificados, então caf\u00e9 chega como café.

As chaves indexadas viram listas

app.hosts[0]=alpha
app.hosts[1]=beta
app:
  hosts:
    - alpha
    - beta

É assim que o Spring escreve uma lista num arquivo que não tem listas, e é o que o conversor de YAML para properties deste site produz. Na leitura, porém, você recebia duas chaves literais chamadas hosts[0] e hosts[1]: a ferramenta não reconhecia a própria saída, e a ida e volta perdia a sequência. Agora os índices formam uma sequência quando começam em 0 sem buraco. Um buraco, um repetido, ou um hosts simples ao lado deixam as chaves exatamente como estavam — mover um valor para tapar um buraco seria inventar uma ordem.

Uma chave repetida é recusada

app.port=8080
app.port=3000
Duplicate key "app.port": it already has a different value

O Properties.load fica com a última atribuição sem uma palavra, então o primeiro valor sumia. O sentido de YAML para properties já se recusava a escrever duas chaves que se achatam no mesmo nome; aceitá-las aqui em silêncio era o mesmo buraco visto do outro lado. Duas linhas idênticas continuam passando: repetir-se não confessa nada.

No que os valores se transformam

  • Números e booleanos são tipados, como nas ferramentas de CSV: 8080 é número, true é booleano.
  • 007 continua string. O 1e3 também, e tudo o mais cujo texto carrega mais do que o valor.
  • Os escalares ambíguos ganham aspas. y, on e NO são strings para um leitor de YAML 1.2 e booleanos para o PyYAML, que lê YAML 1.1. Pôr aspas exatamente nesses deixa os dois leitores de acordo.
  • Um valor vazio é uma string vazia, não um nulo: o arquivo diz que a chave está lá sem nada dentro, e o YAML diz o mesmo.

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

O que acontece com `app.hosts[0]`?
Vira uma lista, desde que esta página foi escrita. Essas chaves indexadas são o jeito de o Spring escrever uma sequência num arquivo plano, e a ferramenta de YAML para properties deste site também as escreve assim — mas ao lê-las você recebia chaves literais chamadas `hosts[0]` e `hosts[1]`: a ferramenta não reconhecia a própria saída. Uma sequência de índices começando em 0 e sem buraco agora vira uma sequência YAML; o que for menos regular fica literal, porque adivinhar uma posição moveria um valor.
Por que uma chave repetida é recusada?
O `Properties.load` fica com a última e não diz nada: o primeiro valor simplesmente sumia. O sentido contrário já se recusava a escrever duas chaves que se achatam no mesmo nome; lê-las aqui em silêncio era o mesmo buraco visto do outro lado. Duas linhas idênticas não confessam nada e continuam passando.
Por que `007` saiu entre aspas?
Para continuar string. Os valores são tipados como este site tipa o CSV — `8080` é número, `true` é booleano —, mas `007` é um identificador cujos zeros contam, então fica como texto. As aspas também protegem o que um leitor de YAML 1.1 leria errado: `y`, `on` e `NO` são strings no seu arquivo e booleanos para o PyYAML; entre aspas, continuam eles mesmos.

Conversores relacionados