mygems

Converter JSON em CSV

Uma árvore achatada em uma tabela que abre em qualquer lugar.

  • Objetos aninhados achatados
  • Arrays mantidos ou divididos em linhas
  • Encontra o array de registros
  • Nada é enviado

1.Abrir o JSON

JSON ou JSON Lines. Arraste para cá ou escolha um arquivo.

Ou cole um JSON

Por que existe

JSON é uma árvore e CSV é um retângulo, então todo conversor faz escolhas sobre o aninhamento, e a maioria as faz em silêncio. Aqui elas ficam à vista: objetos aninhados viram colunas com ponto, como address.city, arrays ficam inteiros em uma célula a não ser que você escolha um para espalhar em linhas, e os registros são encontrados mesmo quando estão dentro de uma resposta de API e não no topo do arquivo.

O que ele faz

  • Lê um array JSON, um único objeto ou JSON Lines com um registro por linha.
  • Encontra os arrays dentro de uma resposta de API, como `data` ou `results`, e deixa você escolher qual contém os registros.
  • Achata objetos aninhados em nomes de coluna com ponto, na ordem em que os campos aparecem pela primeira vez.
  • Mantém arrays como texto JSON em uma célula, ou dá a cada item de um array uma linha própria, repetindo os campos do registro pai.
  • Aceita um arquivo ou JSON colado, e mostra a tabela antes de você baixar.

Registros que não têm todos os mesmos campos

O JSON de verdade raramente tem. Todo campo que aparece em algum registro vira uma coluna, e o registro sem esse campo fica com a célula vazia ali. Nada é descartado só porque o primeiro registro não tinha.

Perguntas

Como os objetos aninhados são tratados?
Cada campo aninhado vira uma coluna própria, nomeada pelo caminho: `{"address": {"city": "Lyon"}}` vira uma coluna chamada `address.city`. Por mais fundo que seja o aninhamento, o resultado é um único nível de colunas.
O que acontece com arrays?
Por padrão, o array fica em uma única célula como texto JSON, então o número de linhas continua igual ao de registros. Escolha um array para dividir e cada item dele ganha uma linha, com o resto do registro repetido ao lado.
Meu JSON é um objeto, não um array. Funciona?
Funciona. Se os registros estão dentro de uma chave como `data` ou `items`, a ferramenta lista todos os arrays que encontrar e começa pelo maior. Um objeto único sem nenhum array vira uma tabela de uma linha.