Pular para o conteudo principal
CuteJSON
↑↓ Navegar Enter Selecionar Esc Fechar

Como converter JSON para CSV sem perder dados

Publicado 2 min de leitura Por Akash Kinkar Pandey

CSV nao tem uma especificacao que todos seguem, e exatamente por isso tantos conversores discordam entre si em casos extremos. Esta ferramenta segue RFC 4180 e declara o unico lugar onde se desvia dela, em vez de escolher regras silenciosamente.

Usando o conversor JSON para CSV

Escolha uma direcao, defina o delimitador (virgula, ponto e virgula ou tabulacao) e se a primeira linha contem nomes de colunas, depois pressione Converter. Ir para CSV precisa de um array de objetos, a unica forma de JSON que e genuinamente uma tabela; um unico objeto tambem e aceito, considerado como uma tabela de uma linha.

Convertendo

[{"name":"Doe, Jane","age":30,"note":null},{"name":"Smith","age":25,"note":"line1\nline2"}]

produz:

name,age,note
"Doe, Jane",30,
Smith,25,"line1
line2"

Um campo so e colocado entre aspas quando realmente precisa: a virgula dentro de “Doe, Jane” forca aspas, a quebra de linha incorporada na segunda nota forca aspas, e um valor simples como Smith fica sem aspas.

O que acontece com valores aninhados e null

Um objeto ou array aninhado nao tem forma CSV nenhuma, uma grade de valores simples, entao e escrito na celula como seu proprio texto JSON em vez de ser descartado ou espalhado em colunas inventadas. null se torna um campo vazio, o que significa que um null e uma string vazia sao indistinguiveis quando chegam ao CSV. Ambas as escolhas sao declaradas na pagina em vez de serem descobertas depois.

Por que cada campo volta como string

Convertendo de CSV, cada valor permanece como string, deliberadamente. Um arquivo CSV nao registra tipos nenhuns, entao adivinha-los e como um CEP de 01234 perde seu zero a esquerda e se torna 1234, e como um identificador longo e arredondado no momento em que algo tenta ler como numero. Converter as colunas que voce conhece em numeros depois e uma linha de codigo; um identificador silenciosamente arredondado nao e recuperavel. Lendo o exemplo acima de volta, age retorna como a string "30", nao o numero 30, e o campo vazio note retorna como "", nao null.

Trocar direcao

A troca move a saida atual para a entrada e inverte a direcao, para que voce possa verificar imediatamente que um documento faz o percurso redondo atraves do CSV e de volta como esperado, sem reescrever nada. Experimente com dados que tenham uma virgula dentro de um campo ou um zero a esquerda em um ID, ja que esses sao exatamente os casos que a maioria dos conversores erra.

Voltar a todos os posts