1001Ferramentas
🔄Conversores

Conversor YAML para NDJSON (info)

Explica como representar listas YAML como NDJSON (uma linha JSON por item), com exemplos práticos.

Suporta lista de objetos planos (sem aninhamento).

NDJSON (newline-delimited JSON) é um objeto JSON por linha. Para um arquivo YAML do tipo lista:

- nome: Ana\n  idade: 30\n- nome: Beto\n  idade: 25

O equivalente NDJSON é:

{"nome":"Ana","idade":30}\n{"nome":"Beto","idade":25}

Use yq ou js-yaml em pipelines para esta conversão.

Lista YAML virando uma linha por registro

Você tem um YAML com uma lista de registros e a próxima ferramenta do pipeline quer NDJSON: um objeto JSON por linha, sem vírgulas no fim e sem colchetes em volta. É o formato que jq, BigQuery e a maioria dos carregadores de log esperam receber. Cole a lista no campo de cima e a conversão sai na hora, uma linha por item, pronta para copiar com o botão ao lado.

O parser aqui é deliberadamente simples e não é um YAML completo. Ele procura linhas que começam com traço para abrir um registro novo e linhas indentadas no formato chave: valor para acrescentar campos ao registro atual. Os valores passam por uma conversão de tipo: true, false, null e o til viram literais, inteiros e decimais com ponto viram números, e aspas simples ou duplas nas pontas são removidas.

Por isso o escopo é lista de objetos planos. Um mapa aninhado não vira objeto aninhado: a chave pai fica com string vazia e os filhos sobem para o mesmo nível, o que é fácil de não perceber. Lista inline como [a, b] continua texto, comentário com dois pontos dentro de um item vira campo, e um arquivo que começa com mapa em vez de traço gera saída vazia. Para arquivos de verdade, yq ou js-yaml. Aqui nada sai do navegador.

Perguntas frequentes

Funciona com YAML aninhado?
Não. Os campos de um mapa aninhado sobem para o registro pai e a chave do mapa fica com string vazia. Achate o YAML antes ou use yq.
Por que meu arquivo não gerou saída nenhuma?
Provavelmente ele começa com um mapa no topo em vez de uma lista. A conversão só abre um registro quando encontra uma linha começando por traço.
Números em notação científica são convertidos?
Não. 1e5 continua como texto, porque o reconhecimento cobre apenas inteiros e decimais com ponto.

Ferramentas Relacionadas