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 NDJSON 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.
NDJSON para INI
A incompatibilidade é total e vale nomear isso antes de qualquer outra coisa. Um arquivo INI é um conjunto de seções nomeadas, cada uma carregando linhas simples de chave e valor — a descrição de uma coisa, normalmente uma configuração de aplicativo. Um arquivo JSON delimitado por linha é uma sequência de registros sem nome, sem ordem que signifique algo e sem tamanho fixo.
Não existe representação que satisfaça os dois. O que a conversão faz é usar o único nome que um registro numa lista tem, que é sua posição: a primeira linha vira [0], a segunda [1], e assim por diante. Isso é fiel, não perde nada, e produz um arquivo cujos nomes de seção não carregam significado nenhum.
Se os registros são genuinamente várias configurações — uma por servidor, uma por ambiente, uma por cliente — então renomear [0] e [1] para os nomes que essas coisas realmente têm transforma a saída num arquivo utilizável, e é o trabalho inteiro. As chaves por baixo já estão corretas.
Se os registros são dado, e não configuração, nenhuma quantidade de renomeação ajuda, e as seções numeradas são a conversão te avisando disso. Cem seções nomeadas por posição não é um arquivo de configuração; é uma tabela escrita na notação errada. CSV, JSON ou um banco de dados é o que isso quer, e cada um deles fica a uma conversão de distância da mesma origem.
Isso pega as pessoas de surpresa, então vale ser explícito. Um arquivo com exatamente uma linha ainda é uma lista de um item, e a saída é uma seção [0] carregando todos os campos desse registro. Não é o INI limpo que você teria a partir do mesmo objeto sozinho.
O conserto é mudar o formato de origem, não editar a saída. Salve essa linha única com extensão .json e converta JSON para INI em vez disso: ali as chaves do nível superior do registro viram os cabeçalhos de seção, valores simples são escritos acima deles, e o arquivo parece algo que uma pessoa escreveu. É o mesmo dado por outra porta, e leva dez segundos.
O INI suporta seções e nada dentro de seções. Neste par, esse único nível é consumido pelo índice do registro, então todo campo de um registro — incluindo qualquer aninhamento que ele tivesse — precisa morar no nome da chave.
Um registro com um objeto de servidor contendo uma porta produz uma linha lendo server.port dentro da seção numerada. Nada é descartado e o caminho é preservado, mas dois registros com a mesma estrutura aninhada agora não compartilham nada estruturalmente: são duas seções cujas chaves acontecem de ser escritas do mesmo jeito. Qualquer leitor que reconstrói aninhamento a partir de chaves com ponto vai reconstruir isso por seção, o que normalmente é o que você quer e nunca é algo para presumir.
Um registro carregando uma lista de servidores permitidos produz chaves chamadas 0, 1 e 2 sob o caminho daquele campo. Combinado com as seções numeradas, uma saída pode acabar com uma linha lendo hosts.0 dentro de uma seção chamada [2], o que é legível e nada bonito.
Leitores de INI que suportam listas de alguma forma costumam esperar uma única linha com valores separados por vírgula, e alguns esperam a mesma chave repetida. Nenhum dos dois é o que isso produz. Se o aplicativo tem uma convenção, juntar o array numa única string na origem antes de converter produz uma linha que o leitor entende nativamente; fazer isso depois significa editar cada grupo na mão.
Um `true` do JSON é gravado como true, um número como seus dígitos, um null como a chave sem nada depois do sinal de igual, e uma string exatamente como estava. Aspas aparecem só onde o valor não voltaria do jeito que entrou: ao redor de um valor com espaço numa das pontas, um que já começa e termina com aspas, e um contendo quebra de linha. Isso mantém o arquivo parecendo algo que uma pessoa digitou, que é o que quem for editar depois espera.
Uma quebra de linha dentro de um valor é o caso que vale nomear, porque uma entrada de INI é uma linha. Ela é gravada como uma barra invertida e um n dentro das aspas em vez de uma quebra real, o que impede o texto depois dela de virar linhas soltas — ou, quando uma delas parece um cabeçalho entre colchetes, uma seção que não estava em nenhum registro. Certificados, chaves e scripts embutidos são os portadores comuns, e embora agora sobrevivam a um ciclo completo aqui, um valor desse tamanho ainda pertence ao próprio arquivo, com o INI apontando para o caminho, que é o que a maioria dos aplicativos que leem INI espera de qualquer forma.
O INI suporta comentários — uma linha começando com ponto e vírgula ou cerquilha — e o leitor deste site respeita os dois na direção contrária. O JSON não, então o arquivo convertido chega sem nenhum.
Como o motivo de produzir um INI quase sempre é alguém vai ler ou editar ele, escrever essas linhas é a primeira edição útil. Quais seções são específicas de ambiente, qual valor precisa bater com algo em outro lugar, e qual o aplicativo ignora: nada disso poderia ser carregado pela origem, e tudo isso é para o que o formato de destino serve.
Todo valor num arquivo INI é texto. Se 8080 é um número, se true é um booleano e se 007 mantém os zeros é decidido por quem ler o arquivo — o configparser do Python torna isso explícito com getint e getboolean, e aceita yes, on e 1 como verdadeiro também.
Isso é uma perda em relação à origem, onde os tipos estavam declarados. Também normalmente não é um problema, porque um aplicativo que lê INI já sabe o que espera de cada ajuste. Onde isso importa de verdade é em identificadores com zeros à esquerda, e o conserto mora no código que lê, não no arquivo.
A regra honesta de parada para este par: se a saída tem mais que um punhado de seções numeradas e você não consegue dar um nome de verdade para cada uma, a conversão respondeu uma pergunta diferente da que você fez. INI descreve uma coisa; uma lista de registros não é uma coisa só.
As alternativas a partir do mesmo arquivo estão todas a um clique de distância e todas melhores para esse caso. CSV ou uma planilha se uma pessoa vai olhar os registros, SQL ou Parquet se uma máquina vai consultar eles, TOML se o que você realmente queria era uma lista de registros num arquivo de configuração, já que ele tem uma construção de array de tabelas que o INI simplesmente não tem.
A conversão é JavaScript puro nesta aba do navegador. Nada é enviado, não há conta ou fila, e o plano gratuito aceita até 100 MB — um limite que nenhum arquivo de configuração jamais alcançou.
Isso importa mais do que o tamanho do arquivo sugere. Despejos de configuração carregam strings de conexão, endpoints de API, nomes de host internos e, mais vezes do que qualquer um admite, uma credencial que deveria ter sido uma variável de ambiente. Mandar um desses para um conversor na infraestrutura de outra pessoa só para tirar as chaves seria uma troca ruim a qualquer preço.
| NDJSON | INI | |
|---|---|---|
| Nome completo | Newline-Delimited JSON | Configuração INI |
| Extensão do arquivo | .ndjson, .jsonl | .ini, .cfg, .conf |
| Tipo de mídia | application/x-ndjson | text/plain |
| Publicado pela primeira vez | 2013 | 1985 |
| Licença | Padrão aberto | Padrão aberto |
| Situação hoje | Atual | Antigo, ainda lido em todo lugar |
| Abre no navegador | Nenhum navegador | Nenhum navegador |
| Considerado no lugar | JSON, CSV | TOML, YAML |
Os programas de sempre não se cruzam: NDJSON abre em jq e pandas, e INI em Notepad e Visual Studio Code, então quem receber o resultado precisa de algum do segundo grupo.
Os dois miram trabalhos diferentes: NDJSON em mover dados entre programas e a transmissão, 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.
INI e de 1985. Notepad e Visual Studio Code leem o formato.
INI foi publicado em 1985 e NDJSON em 2013. 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.
NDJSON 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.
Para a conversão, não: ela acontece no navegador que você já tem aberto. Para abrir o resultado você precisa depois do programa com que o seu aparelho normalmente exibe INI Configuration.