Português (Brasil)

Ferramentas de desenvolvedor · Conversores de sintaxe

CSV para JSON e JSON para CSV: cabeçalhos, valores de string e nivelamento

· Como funciona

JSON csv formatos de dados

Uma árvore JSON aninhada achatada em uma direção em colunas CSV pontilhadas
Ilustração vetorial original ToolAcre

CSV é plano, sem tipo e ambíguo em relação ao seu próprio delimitador, enquanto JSON é aninhado e digitado. Esta postagem mostra como um conversor mapeia linhas para objetos e vice-versa, e onde as informações são perdidas em cada direção.

Cada número voltou entre aspas - a exportação CSV foi convertida para JSON onde 42 se tornou "42" e o código ZIP manteve seu zero à esquerda pela primeira vez

A pasta de trabalho pede exemplos de CSV-to-JSON, mas ToolAcre nunca lê CSV. O mecanismo anuncia exatamente nove pares direcionados e nenhum começa com CSV. A leitura de um arquivo exigiria escolhas sobre delimitador, cotação, presença de cabeçalho e tipos de células; este painel recusa-se a fazer quatro suposições silenciosas. O artigo corrigido, portanto, documenta a direção enviada de JSON-to-CSV.

Essa decisão unilateral é visível tanto na interface quanto nos erros. CSV aparece como um destino, não uma fonte, e tentar o inverso retorna `UNSUPPORTED_CONVERSION` com conselhos para usar uma ferramenta que pergunte sobre dialeto e tipos. Um título sugerindo ambas as direções distorceria o produto, mesmo que o tema geral fosse comum em outros lugares.

CSV não é lido aqui: comece com o caminho JSON-to-CSV que a ferramenta realmente envia

Uma matriz raiz JSON fornece as linhas. Um objeto simples torna-se uma linha. Um objeto cuja única chave contém um array desembrulha esse array e avisa que ele usou a propriedade nomeada. Objetos com chaves irmãs adicionais não são desembrulhados, pois isso descartaria ou duplicaria esses irmãos.

Cada registro selecionado é nivelado antes da coleta das colunas. Os registros podem até ser escalares dentro de um array; aqueles usam uma coluna `value`. Um escalar simples na raiz do documento é recusado porque uma string ou número não define uma tabela com registros e campos.

Escolhendo registros de JSON: arrays, objetos únicos e wrappers de array de uma chave

Os tipos JSON sobrevivem apenas como texto de célula. Booleanos tornam-se `true` e `false`, os números usam sua renderização decimal e nulo se torna uma célula vazia. CSV não consegue distinguir aquele nulo da string vazia, então o escritor conta nulos e avisa sobre a ambiguidade em vez de chamar o resultado equivalente.

Inteiros largos já estão sujeitos à análise JSON antes deste estágio, portanto, um literal numérico inseguro pode ter perdido precisão. Colocar um identificador entre aspas preserva seu texto. Strings semelhantes a fórmulas recebem um apóstrofo adicional por padrão quando começam com `=`, `+`, `-`, `@`, tabulação ou retorno de carro; o numérico real `-5` permanece um número e não é prefixado.

Por que a saída CSV não pode preservar os tipos JSON

As colunas são a união de chaves achatadas na ordem vista pela primeira vez. Se uma linha tiver `a` e outra tiver `b`, a saída terá ambas as colunas e preencherá cada campo ausente com uma célula vazia. Um aviso relata linhas irregulares em vez de alterar valores sob os cabeçalhos errados.

A classificação de chaves de objeto não é aplicada a CSV; a regra do escritor é a primeira aparição nos registros. Isso torna um exemplo estável para uma entrada JSON fixa, mas não é um contrato de esquema. Organize as chaves de origem deliberadamente ou pós-processe o cabeçalho quando uma importação downstream exigir uma ordem prescrita.

Achatamento de dados aninhados — caminhos de pontos como address.city, matrizes como colunas indexadas ou strings unidas e o ponto em que CSV simplesmente não consegue manter a forma

As chaves de objetos aninhados são unidas por um ponto: `address.city`. As matrizes usam o mesmo separador e índices numéricos: `tags.0`, `tags.1`. Objetos e matrizes vazios retêm uma célula vazia em seu próprio caminho, em vez de desaparecer. Isto produz um retângulo ao mesmo tempo que admite que uma árvore foi projetada em nomes.

Uma chave de origem que já contém um ponto é ambígua com um caminho aninhado. ToolAcre detecta e avisa, mas não inventa uma sintaxe de escape que as planilhas não entenderiam. Matrizes profundas ou longas também podem exceder o limite de coluna 2,000, onde a conversão se recusa em vez de emitir uma tabela que o software de planilha comum não pode usar.

Exemplo resolvido: uma lista de clientes em ambos os sentidos — CSV para JSON, editando um campo aninhado, e JSON de volta para CSV com o aninhamento nivelado

Use `[ {"id":"0042","address":{"city":"Oslo"},"tags":["new","west"],"note":"=1+1"}, {"id":"0043","address":{"city":"Lima"},"tags":[],"note":null} ]`. Os cabeçalhos incluem id, address.city, tags.0, tags.1 e nota. A segunda linha recebe espaços em branco para índices de tags ausentes e sua nota nula é indistinguível do texto vazio.

A primeira nota é prefixada com um apóstrofo para que uma planilha a trate como texto. Os registros terminam com CRLF, os campos contendo delimitador, aspas ou final de linha são colocados entre aspas duplas e as aspas incorporadas são duplicadas. Selecionar ponto e vírgula ou tabulação altera o delimitador; um UTF-8 BOM opcional pode ser adicionado para consumidores que precisam dele.

Exemplo resolvido: uma matriz de clientes aninhada achatada uma vez em CSV

CSV malformado ou codificado ambiguamente está fora desta rota porque nenhum CSV entra nela. O CSV Cleaner é o lugar para escolher ou detectar dialetos e reparar citações. Aqui a fonte é estrita JSON e a saída segue as convenções documentadas do escritor.

O conversor também limita a saída em 100,000 linhas e 2,000 colunas. Matrizes vazias são recusadas porque um arquivo sem cabeçalho nem linha não possui formato de tabela. Esses limites são caminhos de código impostos, não promessas de desempenho, e o artigo não inventa números de rendimento.

Conclusão: CSV é uma tabela, JSON é uma árvore - e como o painel de conversores de sintaxe se move entre eles sem carregar as linhas

JSON é uma árvore digitada; CSV é uma tabela de texto. ToolAcre escolhe linhas, nivela caminhos, une colunas, cita campos e neutraliza texto perigoso, mas não pode preservar nulo versus vazio ou reconstruir o aninhamento posteriormente. Essas perdas são estruturais e não de ruído de formatação.

Use esta direção quando a saída em formato de planilha for o artefato pretendido. Se você precisar de CSV-to-JSON, escolha um leitor que pergunte sobre delimitador, cabeçalho e tipos. Recusar o inverso é mais seguro do que retornar JSON convincente construído a partir de suposições não revisadas.