piapia123
es

Conversor INI / .properties ↔ JSON

Formato

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

Convierte un archivo de configuración como INI, `.properties` o `.conf` a JSON, o al revés. Los dos dialectos conviven en una sola herramienta tras una opción, porque son dos variantes de lo mismo (`clave = valor` más comentarios) y la extensión `.conf` no dice nada sobre cuál tienes. Las diferencias siguen la norma de cada formato en vez de allanarse, y ahí está la gracia de esta herramienta: · Comillas: en INI, `key = "valor"` envuelve un valor, así que las comillas se quitan; en `.properties` las comillas son caracteres normales y se conservan (así las lee el `Properties` de Java). · Escapes y continuaciones: `\uXXXX`, `\n` y la barra invertida final solo se aplican en `.properties`. En modo INI los valores se dejan tal cual: si no, un INI con una ruta de Windows (`C:\dir\`) pierde una línea entera por la regla de continuación. · Espacio final: Java quita solo el espacio *antes* de un valor y conserva el de después; INI quita los dos extremos. También se aclaran dos cosas que los formatos sencillamente no tienen: las claves duplicadas conservan el último valor (como en Java y la mayoría de lectores de INI), y los arrays se escriben como claves repetidas.

Funciones

  • Las dos direcciones, detectadas automáticamente o fijadas a mano
  • Una opción cambia de dialecto: INI ([secciones], comillas quitadas) o .properties (comentarios !, separador de espacio, escapes, continuaciones)
  • Una cabecera `[db]` se convierte en un objeto anidado; la misma sección repetida se fusiona en vez de reemplazarse entera
  • Un anidamiento de más de un nivel usa nombres con puntos (`[a.b]`), y cada ruta recibe una sola cabecera
  • Las claves duplicadas conservan el último valor, y las sobrescritas se listan: esos datos se han perdido de verdad
  • Los escapes `\uXXXX`, `\n` y `\: ` y las continuaciones con barra invertida se descodifican como lo hace Java
  • Los números solo se convierten cuando no se pierde nada: `port = 5432` pasa a número y `zip = 007` sigue siendo texto
  • `true` / `false` pasan a booleanos; `True` / `yes` se quedan como cadenas (las implementaciones no coinciden, así que no se adivina)
  • Al exportar, los valores con saltos, espacios al principio o al final, o que empiezan por `#` `;` `!` se entrecomillan para que no se lean como comentarios
  • En JSON → INI, un null da error con su ruta (ninguno de los dos formatos tiene null)
  • Los errores de análisis señalan un sitio concreto en vez de decir «formato incorrecto»

Cómo se usa

  1. Pega INI / .properties o JSON: lo que se pueda analizar como JSON se trata como JSON y el resto como INI
  2. Comprueba que el dialecto sea el correcto (para un archivo `.properties` elige la segunda opción, o los escapes y las continuaciones no se aplicarán)
  3. El resultado se actualiza mientras escribes; la dirección también se puede fijar a mano
  4. Copia el resultado

Preguntas frecuentes

¿Elijo INI o .properties?
Fíjate en de dónde viene el archivo. Un archivo `.properties` es del mundo Java (`java.util.Properties`): admite escapes `\uXXXX`, continuaciones con barra invertida al final y comentarios con `!`, y las comillas alrededor de un valor son contenido, no delimitadores. INI es la familia más amplia (los `.ini` de Windows, varios `.conf`): tiene `[secciones]` y las comillas sí envuelven valores. Con extensión `.conf`, mira el contenido: `[secciones]` significa INI, mientras que escapes `\u` o una barra invertida final significan `.properties`. Elegir mal el dialecto se nota en barras invertidas o comillas de más o de menos, sin ningún error de análisis.
¿Por qué solo sobrevivió una línea si escribí la clave dos veces?
Porque el último gana es el comportamiento estándar en los dos formatos: el `Properties` de Java y casi todos los lectores de INI funcionan así. Esta herramienta lo respeta, pero avisa de las claves sobrescritas en la salida, ya que esos datos se pierden de verdad. Si querías decir «esta clave tiene varios valores», la forma convencional en INI son claves repetidas, que los lectores tratan por separado, y es la que usa la dirección de exportación. La de importación conserva solo la última, así que ese camino pierde información, y la herramienta lo dice.
¿Y los arrays y los null?
Ninguno de los dos formatos tiene arrays ni tiene null. Un array se exporta como claves repetidas (`tags = a`, `tags = b`), la convención más común en el mundo INI. Un null da error por defecto y nombra la clave, porque la alternativa es que la clave desaparezca del todo: recibirías una configuración a la que le falta un campo sin nada que te avise. También puedes elegir «Como valor vacío» u «Omitir la clave». ⚠️ Un null dentro de un array no se puede omitir: quitar un elemento desplaza el índice de todo lo que viene después, y eso es peor que un error.
¿Por qué `port = 5432` es un número y `zip = 007` una cadena?
El criterio es que el viaje de ida y vuelta no pierda nada: un valor solo pasa a número si convertirlo a número y volver a texto devuelve la cadena original. `5432` vuelve igual, así que es un número. `007` → 7 → `7`, distinto, así que se queda `"007"`: el cero inicial forma parte del identificador y quitarlo es irreversible. `true` / `false` pasan a booleanos (en un archivo de ajustes, leer `debug = true` como la cadena `"true"` hace que un `if (cfg.debug)` corriente sea siempre verdadero), mientras que `True` y `yes` se quedan como cadenas, porque las implementaciones no coinciden y no se adivina. Elige «Todo como texto» para desactivar la deducción.

Herramientas relacionadas