Cookies de estadística y publicidad
Usamos cookies de estadística y de publicidad, y ambas van a Google. Si rechazas, para ti no cambia nada visible.Ir a la página de privacidad
Aquí puedes convertir JSON a INI gratis y sin cuenta: suelta el archivo arriba y en un par de segundos tienes el resultado listo para descargar. La conversión ocurre en tu propio navegador, así que el archivo no se sube nunca. Funciona igual en Windows, macOS y Linux que en iPhone y Android, y sigue funcionando aunque cortes la conexión.
Hasta 100 archivos a la vez. Mezclar formatos no es problema.
Se convierten uno tras otro y vuelven juntos en un ZIP.
JSON a INI
Esa frase es toda la conversión. Un archivo INI es una lista de secciones, cada una con líneas planas de clave y valor, y no hay forma de meter una sección dentro de otra. Tampoco tiene especificación: viene de 1985, es anterior a la idea de que un formato de configuración necesitara una, y cada analizador opina algo distinto sobre las comillas y los comentarios.
JSON anida sin límite. Así que la conversión tiene que proyectar un árbol sobre dos niveles, y la pregunta interesante no es si funciona sino qué hace con el tercer nivel y con todo lo que hay debajo. La respuesta corta es que conserva los datos y renuncia a la estructura, que es el intercambio correcto en la dirección en la que suele viajar un archivo de configuración.
Cada clave de primer nivel cuyo valor sea un objeto se convierte en una sección: un JSON con objetos servidor, registro y base_datos produce [servidor], [registro] y [base_datos], con sus claves escritas debajo. En ajustes que escribió una persona, esto coincide muy a menudo con el archivo que habrías tecleado tú.
Las claves de primer nivel con un valor simple —un indicador de depuración, un número de versión— se escriben por encima de la primera cabecera de sección, no después. No es una decisión estética: en INI una sección se apropia de todas las líneas que la siguen hasta la cabecera siguiente, así que una clave suelta escrita más abajo pasaría a formar parte de la sección anterior y cambiaría de significado.
Un tercer nivel de anidamiento se escribe como una clave con punto. Si servidor contiene un objeto tls que contiene una ruta de certificado, la salida es una sección [servidor] con una línea que dice tls.cert. No se descarta nada, y el camino de vuelta a la forma original queda escrito dentro del nombre de la clave.
Algunos analizadores entienden esa convención y reconstruyen el anidamiento; la mayoría no, y tratan tls.cert como una clave que casualmente lleva un punto. Cualquiera de las dos cosas suele bastar para leer un ajuste. Lo que no es, en general, es reversible: una clave de JSON que contenga un punto de verdad se vuelve indistinguible de un nivel de anidamiento, y ningún lector puede saber cuál de las dos era.
La clave sobrevive y el valor no: un null sale como la clave, el signo igual y nada detrás. Es lo más parecido a un valor sin asignar que tiene INI, porque el formato no conoce el nulo ni tiene manera de expresarlo.
Lo que haga tu analizador con eso varía y merece diez segundos de comprobación. El configparser de Python devuelve una cadena vacía. Algunos lectores devuelven también la cadena vacía pero la interpretan como falso en un contexto booleano, y unos pocos se saltan la clave entera. Si la diferencia entre «puesto a nada» y «no puesto» decide el comportamiento de la aplicación, borra esas líneas a mano en lugar de entregar la ambigüedad.
INI no tiene listas. Un array con tres nombres de host permitidos se convierte en tres líneas con las claves 0, 1 y 2, lo que conserva todos los valores y no coincide con casi ninguna convención de analizador. Los formatos que sí admiten listas suelen esperar una sola línea con los valores separados por comas, y unos pocos esperan la misma clave repetida.
Esta es la parte de la conversión que conviene arreglar en el JSON antes de ejecutarla y no en el INI después. Une el array en una única cadena con el separador que espere la aplicación, convierte, y la salida es una línea que el analizador lee de forma nativa. Hacerlo en el otro orden significa editar a mano cada grupo numerado.
Un array en el nivel superior produce secciones nombradas según la posición: [0], [1], [2], cada una con las claves de un registro. El archivo es INI sintácticamente válido y no existe ningún programa sensato que lo lea.
Esa salida es una señal, no un fallo. INI es un formato de configuración —un conjunto de ajustes con nombre para una aplicación— y una lista de registros es un conjunto de datos. Si lo que tienes es una lista, el destino es CSV o una hoja de cálculo cuando la va a leer una persona, y JSON o una base de datos cuando la va a leer un programa. La conversión no se niega, porque un archivo de un solo registro es algo legítimo que querer, pero una ristra de secciones numeradas significa que la respuesta a la pregunta original era no.
Casi todos los valores se escriben exactamente como están —una ruta, un nombre de host, un puerto, un indicador—, lo que mantiene el archivo con el aspecto de algo tecleado por una persona. Tres tipos de valor no. Un valor que contiene un salto de línea, un valor que ya empieza y acaba por comillas, y un valor con un espacio o un tabulador en cualquiera de sus extremos se envuelven en comillas dobles; y dentro de esas comillas un salto de línea se escribe como barra invertida y ene, un retorno de carro como barra invertida y erre, y una barra invertida como dos barras.
Ese escape es reciente y vino a tapar un defecto real. Antes, una cadena de JSON con un salto de línea se escribía con el salto de verdad, así que el texto que venía después se leía como líneas nuevas del INI: aparecía una sección que no existía en el origen y —lo grave— la siguiente clave legítima quedaba capturada dentro de esa sección inventada. Un valor podía mover de sitio a su vecino. Ahora las dos mitades del conversor se entienden y un valor multilínea sobrevive a la ida y la vuelta. Otro programa que lea el archivo puede no conocer el escape y devolverte los dos caracteres en lugar del salto, así que un certificado o un fragmento de script sigue perteneciendo a su propio archivo, con el INI apuntando a la ruta.
El archivo que descargas se escribe en UTF-8. Merece decirlo en la página en español porque aquí es donde se nota: una ruta con eñe, un nombre de empresa con tilde, un mensaje de aviso en castellano dentro de un ajuste. En JSON esos caracteres nunca fueron un problema y en INI dependen enteramente de con qué código de página abra el archivo la aplicación que lo lee.
INI es un formato nacido en Windows y el software de escritorio antiguo suele asumir la página de códigos regional en lugar de UTF-8, que es exactamente por qué un valor con acentos aparece luego como galimatías. Nada dentro del archivo declara su codificación, así que no hay forma de avisar al lector. La comprobación práctica es convertir, abrir el resultado en la propia aplicación y mirar una línea con tildes antes de dar por buena toda la configuración.
INI guarda todo como texto. Un true de JSON se escribe true, un 8080 se escribe 8080, y lo que signifiquen después lo decide lo que lea el archivo. El configparser de Python lo hace explícito con getboolean y getint, y además acepta yes, on y 1 como verdadero.
Conviene saber en qué dirección adivina tu analizador antes de fiarte de un valor. Una cadena de versión «1.0» es texto en el JSON y es muy probable que se lea de vuelta como un número, y un identificador de compilación con ceros a la izquierda los pierde en cuanto algo lo trate como entero. Donde eso importe, el arreglo está en la aplicación que lee el archivo y no en el archivo.
La salida no lleva comentarios, porque JSON no tiene ninguno que dar. INI sí los admite —una línea que empieza por punto y coma o por almohadilla— y este conversor respeta los dos cuando lee en la dirección contraria.
Como el motivo de pasar unos ajustes a INI suele ser que una persona los va a editar, las líneas de comentario merecen añadirse en cuanto tengas el archivo: qué valores dependen del entorno, cuál tiene que coincidir con otro de otro sitio y qué sección ignora la aplicación por completo. Ésa es justamente la información que un JSON generado nunca pudo llevar. El orden de las claves sí se conserva de principio a fin, así que el archivo sale en el orden en que lo escribiste y los comentarios caen donde esperas.
Es JavaScript corriente dentro de esta pestaña del navegador. El archivo no se sube, no hay cuenta ni cola, y la capa gratuita acepta hasta 100 MB, varios órdenes de magnitud por encima de cualquier archivo de configuración.
El argumento de privacidad no es decorativo en este par. Los archivos de ajustes llevan cadenas de conexión a bases de datos, puntos de acceso de API, nombres de máquinas internas y, más a menudo de lo que nadie admite, una contraseña que debería haber sido una variable de entorno. Convertir uno en un servidor ajeno significa entregar todo eso a un tercero sin ninguna contrapartida.
| JSON | INI | |
|---|---|---|
| Nombre completo | JavaScript Object Notation | Configuración INI |
| Extensión de archivo | .json | .ini, .cfg, .conf |
| Tipo de medio | application/json | text/plain |
| Publicado por primera vez | 2001 | 1985 |
| Especificación | RFC 8259 | — |
| Licencia | Estándar abierto | Estándar abierto |
| Situación actual | Vigente | Antiguo, aún se lee en todas partes |
| Se abre en el navegador | Todos los navegadores | Ningún navegador |
| Considerado en su lugar | XML, YAML, NDJSON | TOML, YAML |
Ningún navegador lee INI. Es el menos portátil de los dos, así que conviene asegurarse de que el destinatario lo acepta antes de enviarlo.
Visual Studio Code lee tanto JSON como INI, así que puedes comparar el resultado con el original sin un segundo programa.
Los dos apuntan a trabajos distintos: JSON a mover datos entre programas y la web y INI a la edición. Conviene sopesarlo antes, porque la razón de ser de uno suele ser la razón por la que el otro resulta incómodo.
JSON se publicó en 2001. Está recogido en RFC 8259, y conviene conocerlo si el archivo tiene que sobrevivir a la herramienta que lo escribió.
INI es de 1985. Notepad y Visual Studio Code lo leen.
INI se publicó en 1985 y JSON en 2001. El más antiguo suele ser el archivo más seguro para entregar; el más reciente hace lo mismo con menos bytes.
No. Esta conversión ocurre por completo en tu navegador, así que el archivo no sale de tu dispositivo. Puedes comprobarlo tú: abre la pestaña de red de las herramientas de desarrollo y convierte algo. Verás la propia página y las peticiones de estadística y publicidad con las que se paga este servicio, y ni una sola que lleve tu archivo.
Sí. Sin cuenta, sin marca de agua y sin cupo diario que se gaste: se ejecuta en tu propio equipo, así que puedes volver tantas veces como quieras. El navegador procesa archivos de hasta 100 MB, 100 a la vez.
JSON y INI describen el contenido de maneras radicalmente distintas. La conversión es por tanto una reconstrucción y no una copia: fiel, pero no idéntica byte a byte. INI no admite anidamiento. Todo lo que baje de un nivel se aplana en claves separadas por puntos.
Ningún navegador lee INI. Es el menos portátil de los dos, así que conviene asegurarse de que el destinatario lo acepta antes de enviarlo.