Cookies para estatística e publicidade
Usamos cookies de estatística e de publicidade, ambos enviados ao Google. Recusar não muda nada do que você vê.Ler a página de privacidade
Aqui você converte JSON para INI de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. A conversão acontece dentro do seu próprio navegador, então o arquivo nunca é enviado. Funciona igual no Windows, no macOS e no Linux e também no iPhone e no Android, e continua funcionando mesmo se você cortar a conexão.
Até 100 arquivos de uma vez. Formatos misturados não são problema.
Eles são convertidos um após o outro e baixados juntos em um ZIP.
JSON para INI
Essa frase é a conversão inteira. Um arquivo INI é uma lista de seções, cada uma guardando linhas simples de chave e valor, e não existe jeito de colocar uma seção dentro de outra. Não tem especificação — é de 1985, anterior à ideia de que um formato de configuração precisaria de uma —, e é por isso que o registro marca como legado em vez de atual.
JSON aninha sem limite. Então a conversão precisa projetar uma árvore em dois níveis, e a pergunta interessante não é se funciona, é o que acontece com o terceiro nível e tudo abaixo dele. A resposta curta é que os dados ficam e a estrutura é abandonada, o que é a troca certa na direção que um arquivo de configuração costuma viajar.
Toda chave de primeiro nível cujo valor é um objeto vira uma seção: um JSON com objetos server, logging e database produz [server], [logging] e [database], com as chaves de dentro de cada um escritas embaixo. Para configurações que já foram escritas por uma pessoa, isso costuma bater exatamente, e a saída é o arquivo que você teria digitado.
Chaves de primeiro nível com valor simples — uma flag de debug, um número de versão — são escritas acima do primeiro cabeçalho de seção, não depois. Isso não é escolha de estilo: uma seção INI reivindica cada linha depois dela até o próximo cabeçalho, então uma chave solta escrita mais abaixo viraria membro da seção anterior e mudaria de sentido.
Um terceiro nível de aninhamento é escrito como chave com ponto. Se server tem um objeto tls com um caminho de certificado, a saída é uma seção [server] contendo uma linha tls.cert. Nada é descartado, e o caminho de volta até a forma original fica escrito no próprio nome da chave.
Alguns leitores entendem essa convenção e reconstroem o aninhamento; a maioria não, e trata tls.cert como uma chave que por acaso tem um ponto. Para ler um ajuste, tanto faz. O que não dá é para ir e voltar de forma geral — uma chave JSON que genuinamente contém um ponto fica indistinguível de um nível de aninhamento, e nenhum leitor consegue saber qual era qual.
A chave sobrevive e o valor não: um null sai como a chave, um sinal de igual e nada depois. É o mais perto que o INI chega de um valor não definido, já que o formato não tem null nem jeito de expressar um.
O que o seu leitor faz com isso varia, e vale dez segundos para descobrir. O configparser do Python devolve uma string vazia. Alguns leitores também devolvem string vazia mas tratam como falso num contexto booleano, e alguns pulam a chave inteiramente. Se a diferença entre «definido como nada» e «não definido» muda o comportamento da aplicação, apague essas linhas na mão em vez de entregar a ambiguidade.
INI não tem lista. Um array de três hosts permitidos vira três linhas com chaves 0, 1 e 2, o que preserva cada valor e não bate com quase nenhuma convenção de leitor. Os formatos que suportam listas geralmente esperam uma linha só com os valores separados por vírgula, e alguns esperam a mesma chave repetida.
Esta é a única parte da conversão que vale a pena mudar no JSON antes de rodar, em vez de no INI depois. Junte o array numa string só com o separador que a aplicação espera, converta, e a saída vira uma linha que o leitor lê nativamente. Fazer na ordem contrária significa editar cada grupo numerado na mão.
Um array de primeiro nível no JSON produz seções nomeadas com as posições do array: [0], [1], [2], cada uma guardando as chaves de um registro. O arquivo é INI sintaticamente válido e não existe programa sensato que o leia.
Essa saída é um sinal, não uma falha. INI é um formato de configuração — um conjunto de ajustes nomeados para uma aplicação —, e uma lista de registros é dado. Se o que você tem é uma lista, CSV ou uma planilha é o destino se uma pessoa vai ler, e JSON ou um banco de dados se um programa vai. A conversão não recusa, porque um arquivo com um registro só é uma coisa legítima de querer, mas uma sequência de seções numeradas significa que a resposta para a pergunta original era não.
Quase todo valor é escrito exatamente como está — um caminho, um nome de host, uma porta, uma flag —, o que mantém o arquivo com cara de arquivo digitado por alguém. Três tipos de valor não são. Um valor com quebra de linha, um valor que já começa e termina com aspas, e um valor com espaço ou tabulação nas pontas são envolvidos em aspas duplas, e dentro delas uma quebra de linha vira barra invertida com n, um retorno de carro vira barra invertida com r, e uma barra invertida vira duas.
Esse escape é recente e substituiu um defeito real. Até 09/08/2026 uma string JSON com quebra de linha era escrita como uma quebra de linha de verdade, então o JSON {"app":{"motd":"ola\n[admin]\nsenha=secreta","plain":"x"}} produzia uma seção [admin] que não existia em lugar nenhum da origem — e a chave escrita depois dela, plain, era lida de volta dentro dessa seção inventada em vez de dentro de app. Um valor conseguia mover seus vizinhos. As duas metades deste conversor agora concordam no escape, então um valor de várias linhas sobrevive à ida e volta.
INI guarda tudo como texto. Um true do JSON é escrito como true, um 8080 do JSON como 8080, e o que isso significa depois é decidido por quem quer que leia o arquivo. O configparser do Python torna isso explícito com getboolean e getint, e aceita yes, on e 1 como verdadeiro também.
Vale saber para que lado o palpite pende no seu leitor antes de confiar num valor. Uma string de versão 1.0 é texto no JSON e muito provavelmente vai ser lida de volta como número, e um identificador de build com zeros à esquerda perde eles no momento em que algo o trata como inteiro. Onde isso importa, o conserto fica na aplicação que lê o arquivo, não no arquivo.
A saída não carrega comentários, porque o JSON não tem nenhum para dar. INI suporta — uma linha começando com ponto e vírgula ou cerquilha —, e este conversor honra os dois na direção contrária.
Como o motivo de mover configurações para INI costuma ser que uma pessoa vai editá-las, as linhas de comentário valem a pena adicionar imediatamente: quais valores são específicos de ambiente, qual precisa bater com um valor em outro lugar, e qual seção a aplicação ignora inteiramente. É exatamente a informação que um JSON gerado nunca poderia carregar.
É JavaScript puro nesta aba do navegador. O arquivo não é enviado, não há conta nem fila, e o plano gratuito aceita até 100 MB, o que é várias ordens de grandeza a mais do que qualquer arquivo de configuração precisa.
O ponto de privacidade não é decoração para este par. Arquivos de configuração guardam string de conexão de banco de dados, endpoint de API, hostname interno e, mais frequentemente do que qualquer um admite, uma senha que deveria ser variável de ambiente. Converter um num servidor qualquer significa entregar tudo isso a terceiros sem benefício nenhum.
| JSON | INI | |
|---|---|---|
| Nome completo | JavaScript Object Notation | Configuração INI |
| Extensão do arquivo | .json | .ini, .cfg, .conf |
| Tipo de mídia | application/json | text/plain |
| Publicado pela primeira vez | 2001 | 1985 |
| Especificação | RFC 8259 | — |
| Licença | Padrão aberto | Padrão aberto |
| Situação hoje | Atual | Antigo, ainda lido em todo lugar |
| Abre no navegador | Todos os navegadores | Nenhum navegador |
| Considerado no lugar | XML, YAML, NDJSON | TOML, YAML |
Nenhum navegador lê INI. É o menos portátil dos dois, então vale confirmar que o destinatário aceita antes de enviar.
Visual Studio Code lê tanto JSON quanto INI, então dá para comparar o resultado com o original sem um segundo programa.
Os dois miram trabalhos diferentes: JSON em mover dados entre programas e a web, INI em a edição. Vale pesar isso antes, porque o motivo de um existir costuma ser o motivo de o outro ser incômodo.
JSON foi publicado em 2001. Está descrito em RFC 8259, e vale conhecer se o arquivo precisa sobreviver à ferramenta que o escreveu.
INI e de 1985. Notepad e Visual Studio Code leem o formato.
INI foi publicado em 1985 e JSON em 2001. O mais antigo costuma ser o arquivo mais seguro para entregar; o mais novo faz o mesmo com menos bytes.
Não. Esta conversão acontece inteiramente no seu navegador, então o arquivo não sai do seu aparelho. Você mesmo pode conferir: abra a aba de rede das ferramentas de desenvolvedor e converta alguma coisa. Você verá a própria página e as requisições de estatística e de publicidade com que este serviço é pago, e nenhuma que leve o seu arquivo.
É. Sem conta, sem marca d’água e sem cota diária para gastar: roda no seu próprio aparelho, então você pode voltar quantas vezes quiser. O navegador processa arquivos de até 100 MB, 100 por vez.
JSON e INI descrevem o conteúdo de maneiras radicalmente diferentes. A conversão é, portanto, uma reconstrução e não uma cópia: fiel, mas não idêntica byte a byte. O INI não tem aninhamento. Tudo abaixo de um nível é achatado em chaves separadas por ponto.
Nenhum navegador lê INI. É o menos portátil dos dois, então vale confirmar que o destinatário aceita antes de enviar.