100 % local: tus datos nunca salen de tu navegador

YAML a .properties — Java lo vuelve a leer

Aplana YAML en un archivo .properties de Java. El escapado ya está hecho: lo que Properties.load vuelve a leer es exactamente lo que pusiste.

Instantáneo Privado Cero cookies

Entrada YAML

Salida Properties

Qué hace esta herramienta

El anidamiento pasa a puntos, las listas a í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

La forma [i] es la convención de Spring, la que espera la mayoría de los lectores.

El escape es todo el trabajo

Un archivo .properties es engañosamente simple, y tres de sus reglas se comen datos en silencio.

Un valor que empieza por espacio. Properties.load salta los blancos tras el separador, así que clave= x se relee x. El primer espacio se escapa —clave=\ x— y el valor sobrevive. Los espacios finales se conservan tal cual.

Una clave que empieza por # o !. Esa línea es un comentario. La entrada entera, clave y valor, desaparece al leer. Esos dos caracteres se escapan cuando abren una clave.

=, : y los espacios dentro de una clave también se escapan, y cada barra invertida igual. Un salto de línea en un valor pasa a \n, una tabulación a \t.

Dos claves que se aplanan al mismo nombre

"a.b": 1
a:
  b: 2

Ambas dan a.b. El formato no puede distinguirlas y Properties.load se queda con la última: uno de tus dos valores habría desaparecido, sin nada que lo dijera.

La conversión se detiene y nombra la clave. Es el único caso en que esta herramienta rechaza en vez de convertir, y es el caso en que convertir mentiría.

No hay tipos

Todo en un archivo .properties es texto. true vuelve como "true", 42 como "42", y un null como valor vacío. Tu lector decide qué significan: Boolean.parseBoolean, Integer.parseInt, y una decisión sobre qué quiere decir vacío.

Una palabra sobre la codificación

La salida es texto UTF-8, acentos incluidos. Es lo que lee el Java moderno y lo que siempre ha leído Properties.load(Reader).

Pero Properties.load(InputStream) —la llamada más antigua y más frecuente— lee ISO-8859-1 y convertirá café en galimatías. Si ese es tu lector, cambia a la sobrecarga Reader o escapa los caracteres no ASCII como \uXXXX antes de enviar el archivo.

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

¿Por qué se rechazó mi clave como duplicada?
Porque dos rutas distintas se aplanaron al mismo nombre. Una clave literal `a.b` y un `a:` anidado con un `b:` dentro dan ambas `a.b`, y un archivo .properties no puede distinguirlas: `Properties.load` se queda con la última y el otro valor desaparece. En vez de elegir por ti, la conversión se detiene y nombra la colisión.
¿Qué pasa con un valor que empieza por espacio?
El espacio se escapa como `\ `. Java salta los blancos que siguen al separador, así que `clave= x` se relee como `x`, con los espacios iniciales perdidos sin aviso. Escapar el primero mantiene el valor intacto; los siguientes y los finales no necesitan nada.
¿El archivo conserva mis tipos?
No, y ningún .properties puede. Todo es texto: `true`, `42` y `null` vuelven como las cadenas `"true"`, `"42"` y `""`. Tu lector decide qué significan. Es el formato, no un límite de esta conversión.

Convertidores relacionados