100 % local: tus datos nunca salen de tu navegador

Properties a YAML — listo para Spring Boot

Convierte un archivo .properties de Java en YAML. Las claves con puntos anidan y las indexadas pasan a listas: un application.yml listo para commitear.

Instantáneo Privado Cero cookies
Indentación

Entrada Properties

Salida YAML

Qué hace esta herramienta

Un archivo .properties se vuelve YAML, y los puntos se vuelven estructura.

# servicio
app.name=Demo
app.port=8080
app.debug=true
app:
  name: Demo
  port: 8080
  debug: true

= y : separan igualmente una clave de su valor, las líneas de comentario empiezan por # o !, y una línea que acaba en barra invertida sigue en la siguiente. Los escapes de un archivo .properties —\:, \=, \n, \uXXXX— se decodifican, así que caf\u00e9 llega como café.

Las claves indexadas se vuelven listas

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

Así escribe Spring una lista en un archivo que no tiene listas, y es lo que produce el conversor de YAML a properties de este sitio. Al leerlo, en cambio, obtenías dos claves literales llamadas hosts[0] y hosts[1]: la herramienta no reconocía su propia salida, y la ida y vuelta perdía la secuencia. Ahora los índices forman una secuencia cuando arrancan en 0 sin huecos. Un hueco, un repetido, o un hosts a secas al lado dejan las claves tal como estaban: mover un valor para tapar un hueco sería inventar un orden.

Una clave repetida se rechaza

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

Properties.load se queda con la última asignación sin decir palabra, de modo que el primer valor se esfumaba. El sentido de YAML a properties ya se negaba a escribir dos claves que se aplanan en el mismo nombre; aceptarlas aquí en silencio era el mismo agujero visto del otro lado. Dos líneas idénticas siguen pasando: repetirse no confiesa nada.

En qué se convierten los valores

  • Números y booleanos se tipan, como en las herramientas de CSV: 8080 es número, true booleano.
  • 007 se queda en cadena. 1e3 también, y todo aquello cuyo texto lleva más que su valor.
  • Los escalares ambiguos se entrecomillan. y, on y NO son cadenas para un lector de YAML 1.2 y booleanos para PyYAML, que lee YAML 1.1. Entrecomillar exactamente esos pone de acuerdo a los dos lectores.
  • Un valor vacío es una cadena vacía, no un nulo: el archivo dice que la clave está ahí sin nada dentro, y el YAML dice lo mismo.

Privado por diseño

Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.

Preguntas frecuentes

¿Qué pasa con `app.hosts[0]`?
Se vuelve una lista, desde que se escribió esta página. Esas claves indexadas son como Spring escribe una secuencia en un archivo plano, y la herramienta de YAML a properties de este sitio también las escribe así; pero al leerlas obtenías claves literales llamadas `hosts[0]` y `hosts[1]`: la herramienta no reconocía su propia salida. Una serie de índices que arranca en 0 sin huecos pasa ahora a ser una secuencia YAML; lo menos regular se queda literal, porque adivinar una posición movería un valor.
¿Por qué se rechaza una clave repetida?
`Properties.load` se queda con la última y no dice nada: el primer valor simplemente desaparecía. El sentido contrario ya se negaba a escribir dos claves que se aplanan en el mismo nombre; leerlas aquí en silencio era el mismo agujero visto del otro lado. Dos líneas idénticas no confiesan nada y siguen pasando.
¿Por qué `007` sale entrecomillado?
Para seguir siendo una cadena. Los valores se tipan como este sitio tipa el CSV —`8080` es número, `true` booleano—, pero `007` es un identificador cuyos ceros cuentan, así que se queda como texto. Las comillas protegen además lo que un lector de YAML 1.1 leería mal: `y`, `on` y `NO` son cadenas en tu archivo y booleanos para PyYAML; entrecomillados siguen siendo ellos mismos.

Convertidores relacionados