Command Palette

Search for a command to run...

CSV para JSON: A inferência de tipo irá comer seus códigos postais

CSV para JSON: A inferência de tipo irá comer seus códigos postais

T
Toolz Team
|Jul 7, 2026|16 min ler

Parte da coleção Ferramentas de dados

Conversor CSV para JSON

Converta CSV para JSON online. analisa campos cotados e qualquer delimitador, infere números e booleanos e gera uma matriz de objetos. 100% lado do cliente, sem inscrição.

Usar Conversor CSV para JSON

Um cliente me enviou uma exportação de cliente de 12.000 linhas para carregar em um banco de dados de preparação. Eu o converti, importei e enviei. Dois dias depois, a liderança do OPS perguntou por que algumas centenas de clientes em Nova Jersey tinham códigos postais de quatro dígitos.

07102 tinha se tornado 7102. Cada zip começando com um zero, em todo o arquivo, silenciosamente amputado Não por um bug - por um recurso Inferência de tipo olhou 07102, vi algo que combinava com "um número" e, com ajuda, converteu em um. Os zeros à esquerda não são uma coisa que os números têm.

eu construí o Conversor CSV para JSON no Toolz.dev, e também faz isso. Vou mostrar exatamente onde, porque um conversor que altera silenciosamente seus dados é mais perigoso do que um que apenas falha.

tl;dr: o Conversor CSV para JSON Transforma um CSV em uma matriz de objetos, usando a primeira linha como chaves, rodando inteiramente no seu navegador. o Sempre infere tipos e você pode' t desligar isso na UI - o que significa 071027102, 1250.501250.5, células vazias → null, e true/false → Booleanos. Grandes inteiros com 2⁵³ Stay Strings, o que salva seus IDs do Twitter. Somente vírgula na interface, então CSVs ponto e vírgula do Excel europeu won' t analisar. Cabeçalhos duplicados são um erro difícil, em vez de uma substituição silenciosa - que um & #39; é uma melhoria genuína em relação à maioria dos analisadores Verifique a saída antes de importar e use o formatador json para observá-lo.


O que esse conversor realmente faz com seus dados?

Cada valor em um CSV é um texto. 29 são os personagens 2 e 9. JSON tem tipos reais, então um conversor deve decidir: é 29 O número 29 ou a string "29"? Não há uma resposta certa em geral e todos os analisadores de CSV adivinham.

Este adivinha. sempre. Aqui está o conjunto de regras completo, direto do código e verificado executando-o:

Valor de CSV Saída JSON escrever à tipologia
29 29 número
07102 7102 número - zero desapareceu
1250.50 1250.5 número - centavo desaparecido
true / TRUE true booleano
null / NIL null nulo
(cela vazia) null nulo
9007199254740993 "9007199254740993" barbante
1e3 1000 número
+5 "+5" barbante
.5 ".5" barbante
NO "NO" barbante
+8801712345678 "+8801712345678" barbante
2024-01-05 "2024-01-05" barbante

Alguns deles merecem uma olhada mais de perto, porque o padrão não é óbvio.

O número regex é estrito, e isso é o suporte de carga. ele combina ^-?\d+$ E nada mais. por isso +5 e .5 sobreviva como strings - sem sinal positivo, sem ponto decimal simples. It' também é por quê +8801712345678- um número de telefone de Bangladesh, e eu teste com o meu - aparece intacto. Tire isso + E você perderia para a conversão numérica. Portanto, o rigor do Regex é a acidentalmente proteger os números de telefone e apenas os números de telefone que mantiveram o código do país Plus.

Grandes inteiros são tratados corretamente, o que me surpreendeu. Qualquer coisa fora do intervalo de inteiros seguros do JavaScript (±2⁵³−1) é deliberadamente mantida como uma string em vez de convertida e mutilada. IDs de flocos de neve, IDs do Twitter e chaves de banco de dados de 19 dígitos sobrevivem. A maioria dos conversores ingênuos chama parseInt e te entregar 9007199254740992 onde você tinha ...93. Este verifica o limite primeiro.

NO fica uma corda- que silenciosamente se esquiva do problema da Noruega que come arquivos YAML Formato diferente, analisador diferente, mas digno de nota: o código do país NO É um flip de moedas para saber como um analisador de configuração o trata, e aqui é seguro.

Vazio significa nulo, não string vazia. E aqui está um pequeno bug de documentação que encontrei escrevendo isso: o painel da ferramenta diz: "Como funciona" Painel diz "Valores vazios são preservados como strings vazias na saída JSON." Eles não são. inferType('') retornos null. O texto da interface do usuário está errado; o código é o que é enviado. Estou consertando a cópia.


Por que 07102 se torna 7102 e o que faço a respeito?

Porque um código postal não é um número e um computador não pode ser informado.

07102 Corresponde perfeitamente com os dígitos, opcionalmente negativos. parseInt("07102", 10) é 7102. O zero à esquerda carregava significado - ele foi os dados - e os números não têm como segurá-los A mesma coisa acontece com:

  • CEPs: 07102, 01950, qualquer coisa na Nova Inglaterra ou em Nova Jersey
  • SKUs do produto: 00451
  • Números de telefone sem mais: 0171...
  • Códigos de banco/roteamento, IDs dos funcionários, Qualquer identificador acolchoado
  • dinheiro: 1250.501250.5, e 2100.002100

Vale a pena sentar com esse último. 1250.50 e 1250.5 são o mesmo número e uma string diferente. Se você estiver renderizando a moeda downstream, $1250.5 vai aparecer em uma UI em algum lugar, e alguém registrará um bug que leva uma hora para ser rastreado até uma conversão CSV três semanas antes. (A verdadeira lição que há é armazenar dinheiro como centavos inteiros ou uma string decimal, nunca um float - mas isso e #39; é uma luta por um artigo diferente.)

Neste momento, nesta ferramenta, há Não altere para desligar a inferência. A função subjacente leva um inferTypes Option e a interface do usuário nunca passam por isso, então está ativada, permanentemente, no padrão. Isso é uma lacuna e é o item mais importante da minha lista para esta ferramenta.

Até que seja enviado, suas opções:

  1. Olhe para a saída. Sério - é por isso que a ferramenta mostra JSON em um painel em vez de apenas baixá-lo Digitalize suas colunas de ID. Leva dez segundos e it' s como EU deveria ter pego os códigos postais.
  2. À prova de cotações a montante. Citando no CSV ganhou't help - o analisador tira aspas e então infere, então "07102" ainda se torna 7102. Em vez disso, torne o valor não numérico na origem: Exportar como ZIP-07102, ou adicione uma coluna de prefixo na planilha.
  3. Pós-processo. Converta e corrija as colunas que você sabe que são identificadores: data.forEach(r => r.zip = String(r.zip).padStart(5, '0')). Feio, mas honesto e auditável.
  4. Use um analisador real para pipelines reais. Para qualquer coisa agendada ou automatizada, csv-parse ou papa parse no nó com cast: false fará isso corretamente. Uma ferramenta de navegador é para o único.

O que o analisador acerta?

I' tem sido difícil nisso, então aqui' é a outra metade - e parte disso é genuinamente melhor do que o que você' encontrarei em outro lugar.

Cabeçalhos duplicados são um erro difícil. alimente a,b,a E recusa: Duplicate headers found: a. A maioria dos analisadores silenciosamente deixa a última coluna vencer, então uma coluna de dados desaparece sem uma palavra. Falhar alto aqui é a chamada certa - você não pode ter duas teclas com o mesmo nome em um objeto JSON e fingir que de outra forma perde dados.

Os campos citados são tratados corretamente, por RFC 4180. As vírgulas dentro das cotações ficam paradas; "" torna-se um literal ". Os dados de amostra são fornecidos com "Mike, Jr." especificamente para provar isso.

As novas linhas dentro dos campos citados funcionam. É aqui que a divisão manual do CSV geralmente morre - alguém se divide \n E um campo de endereço de várias linhas detona todo o arquivo. O rastreador de linhas rastreia caractere de estado por caractere, então "line1\nline2" Permanece um campo.

As linhas em branco são ignoradas, então, atrás de novas linhas e a linha vazia, o Excel sai no final, não produz objetos fantasmas.

Linhas irregulares não travam. Muito poucos campos e as teclas que faltam voltam null; muitos e os extras além da contagem de cabeçalhos são descartados silenciosamente. (Aquela última parte I' d chama de discutível em vez de correto - um aviso seria melhor do que um descarte silencioso.)

Um desvio de RFC para saber: Os valores são reduzidos, incluindo aspas internas. RFC 4180 §2.4 diz que os espaços fazem parte do campo e não devem ser ignorados, portanto " John " deveria ser " John ". Esta ferramenta oferece "John". Isso e #39; é uma conveniência deliberada - 99% das vezes que o espaço em branco em um CSV é um acidente que você deseja que desapareça - mas se você e #39; são dados de ida e volta onde o preenchimento é significativo, é & #39; é uma etapa com perdas e as especificações não estão do meu lado.


Por que não analisa meu ponto e vírgula csv?

Porque a interface é somente com vírgula, e isso pega todas as exportações europeias.

Excel em uma localidade que usa uma vírgula como o separador decimal escreve CSVs com ponto e vírgula como o delimitador de campo. Perfeitamente válido, extremamente comum, e essa ferramenta não irá analisá-la. cola a;b E você recebe uma única chave literalmente chamada a;b com o valor "1;2". Ele não & #39; t erro - ele só produz uma coluna inútil, que é pior do que errar.

A função de análise aceita um delimiter opção. A interface do usuário nunca o expõe. Mesma classe de lacunas que a inferência alterna.

Soluções alternativas:

  • localizar e substituir ;, em um editor de texto primeiro - seguro somente Se nenhum campo contiver uma vírgula dentro de aspas.
  • re -exportar do Excel Com "CSV UTF-8 (delimitado por vírgula)".
  • use o Visualizador de CSV em vez disso - ele faz a detecção do delimitador marcando a consistência da coluna-contagem através dos delimitadores candidatos, assim que ele lerá seu arquivo de ponto e vírgula Ele ganhou' t converter para JSON, mas ele'll mostrar-lhe o que você tem.

As guias têm o mesmo problema. O mesmo acontece com o tubo delimitado.


Como faço para converter csv para json no Toolz.dev?

Passo 1: Abra o conversor

vá para o Conversor CSV para JSON. Os dados de amostra são carregados e já convertidos, para que você possa ver a forma imediatamente.

Etapa 2: cole seu CSV

Cole no painel esquerdo. há Sem upload de arquivo- it' é uma área de texto, então abra o seu .csv em um editor de texto e copie-o. Por alguns milhares de linhas, tudo bem. Para uma exportação de 200 MB, use um analisador real.

Sua primeira linha deve ser cabeçalhos e você precisa de pelo menos uma linha de dados. uma única linha retorna CSV must have at least a header row and one data row.

Passo 3: Converter

golpe converter para json. Você obtém uma matriz de objetos, um por linha, chaves do seu cabeçalho, recuou dois espaços A contagem de linhas aparece acima da saída - verifique-a em relação ao que você esperava, uma vez que ele' s o teste de sanidade mais barato possível.

Etapa 4: leia a saída antes de confiar nela

O passo que todos pulam e eu pulei uma vez. Veja suas colunas de ID. Olhe para suas colunas de dinheiro. Se um CEP aparecer sem cotação no JSON, é um número agora.

Etapa 5: Copie ou faça o download

exemplar Para a área de transferência, baixar json para um data.json arquivo.


Quando não devo usar um conversor de navegador?

Ser honesto sobre o limite:

situação usar
Um off, alguns milhares de linhas csv para json
Dados confidenciais que você não pode fazer upload Isso nunca sai do seu navegador
qualquer coisa agendada ou automatizada csv-parse / papa parse no nó
ponto e vírgula ou tabulação delimitado Visualizador de CSV, ou conserte o delimitador
CEPs, SKUs, IDs acolchoados qualquer coisa com cast: false
Saída aninhada de cabeçalhos pontilhados Um script - isso produz apenas objetos planos
100 mil + linhas Streaming Parser; o navegador guarda tudo na memória
Indo para o outro lado json para csv

Essa linha "saída aninhada" vale a pena afirmar claramente, pois as versões mais antigas deste guia afirmaram o contrário: cabeçalhos como user.name e address.city fazer não tornam-se objetos aninhados. Você obtém um objeto plano com uma chave literalmente chamada "user.name". There' s sem expansão de notação de ponto, sem transformação de cabeçalho, sem conversão camelCase Objetos planos, teclas exatamente como digitadas em sua linha de cabeçalho - espaços, hashes e tudo. Um cabeçalho de Order # dá-lhe uma chave de "Order #", que é JSON legal e JavaScript estranho (row["Order #"]).

A razão para alcançar esta ferramenta é a mesma razão que o resto do site: seus dados não & #39; t ir a qualquer lugar Se você & #39; re converter uma exportação de cliente com nomes reais e e-mails nele, que & #39; não é uma coisa pequena - colá-lo em um conversor do lado do servidor significa entregar a um terceiro um arquivo de dados pessoais, que é uma conversa com seu DPO você & #39; prefere não ter Aqui a análise é executada em sua guia Desligue seu Wi-Fi e ele ainda funciona.


Perguntas frequentes

Por que meu CEP perdeu seu zero à esquerda?

Porque a inferência de tipo o converteu em um número e os números não podem armazenar zeros à esquerda. 07102 Corresponde ao padrão "somente dígitos", então ele se torna 7102. Isso afeta códigos postais, SKUs acolchoados, IDs de funcionários e qualquer identificador que seja todos os dígitos. Citando-o no CSV won' t help - as aspas são retiradas antes das execuções de inferência Verifique suas colunas de ID na saída ou prefixe os valores na fonte para torná-las não numéricas.

Posso desativar a conversão automática de tipo?

Não na interface. A função subjacente suporta um inferTypes Opção, mas a interface do usuário não a expõe, portanto, a inferência está sempre ativada. Se você precisar de strings brutas, use um analisador de biblioteca como Papa Parse ou csv-parse Com a transmissão desativada ou corrija as colunas afetadas após a conversão.

Ele suporta arquivos delimitados por ponto e vírgula ou tabulação?

Não - a interface é apenas vírgula Um arquivo ponto e vírgula analisa em uma coluna sem sentido em vez de errar, então observe isso Substitua os ponto e vírgula primeiro por vírgula (seguro somente se nenhum campo citado contiver vírgula), reexporte do Excel como vírgula delimitada ou use o CSV Viewer, que detecta delimitadores automaticamente.

O que acontece com as células vazias?

eles se tornam null, não as cadeias vazias Note que a ferramenta & #39; s própria & quot; Como funciona & quot; painel diz actualmente o contrário - o texto do painel está errado e o código está correcto Células contendo o texto literal null ou nil também se tornar null.

Posso converter um CSV sem uma linha de cabeçalho?

não . A primeira linha é sempre tratada como o cabeçalho, e um arquivo com apenas uma linha retorna um erro dizendo que precisa de um cabeçalho mais pelo menos uma linha de dados. Se seus dados não tiverem cabeçalho, adicione um em um editor de texto antes de colar.

Ele lida com vírgulas e quebras de linha dentro de campos aspas?

Sim, ambos. O analisador acompanha cita o caractere de estado por caractere, então um campo como "Mike, Jr." Mantém sua vírgula e um campo aspas que contém uma nova linha mantém um único valor em vez de dividir a linha. aspas duplas escapadas ("") se tornar uma única cotação literal, de acordo com RFC 4180.

O que acontece com nomes de colunas duplicados?

Ele recusa-se a converter e diz-lhe qual o cabeçalho duplicado That' s deliberate - a JSON object can' t have two identic keys, so the alternative is silently dropping a column Muitos analisadores fazem exatamente isso; rebatizam as colunas e convertem novamente.

Existe um limite de linha?

Sem limite imposto, mas tudo é executado na memória do seu navegador: o texto CSV, a matriz analisada e a string JSON formatada existem de uma só vez. Alguns milhares de linhas são confortáveis; as contagens de seis dígitos farão a luta pela guia. Para arquivos tão grandes, use um analisador de streaming no Node.

Meus dados são carregados em qualquer lugar?

Não. A análise acontece no seu navegador e o seu CSV nunca é transmitido, o que o torna seguro para exportações de clientes e outros dados que você poderia & #39; t legitimamente colar em uma ferramenta do lado do servidor Verifique da maneira mais fácil - abra o DevTools, assista à guia Rede durante a conversão ou simplesmente desligue seu Wi-Fi e veja se ele ainda funciona.


a versão curta

CSV para JSON parece a conversão mais chata na computação e não é, porque no momento em que um analisador decide o que suas strings médio, pode estar errado de maneiras que não se anunciam. Nenhum erro, nenhum aviso, apenas os códigos postais de quatro dígitos que aparecem dois dias depois.

Então: converter, então Leia a saída. Verifique as colunas que são identificadores que fingiam ser números. Se eles saíram sem aspas, você perdeu alguma coisa. Esse hábito custa dez segundos e teria me poupado um e-mail embaraçoso.

o Conversor CSV para JSON é bom no trabalho único - campos cotados, newlines incorporados, grandes-inteiros IDs, e falhas altas em cabeçalhos duplicados, tudo sem seus dados deixando o navegador It' s vírgula-somente, ele sempre infere tipos, e produz objetos planos Agora você conhece todos os três antes que eles mordam.

Indo na outra direção: json para csv. Para inspecionar um CSV confuso primeiro: Visualizador de CSV. Para verificar a saída: formatador json. E se seus dados estão indo para um arquivo de configuração, json para yaml. O passeio mais amplo está no Guia de ferramentas JSON e o Guia de ferramentas de codificação.

Frequently Asked Questions

Because type inference converted it to a number, and numbers can't store leading zeros. 07102 matches the "digits only" pattern, so it becomes 7102. This affects zip codes, padded SKUs, employee IDs, and any identifier that happens to be all digits. Quoting it in the CSV won't help — quotes are stripped before inference runs. Check your ID columns in the output, or prefix the values at the source to make them non-numeric.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!