Anúncios incomodam? Ir Sem anúncios Hoje

CSV para JSON Quando converter e como manter seus dados limpos

Publicado em
CSV para JSON: Quais as situações para converter e como manter seus dados limpos 1
ANUNCIADO Remover?

A maioria dos arquivos CSV chega desorganizada. Eles têm células vazias onde deveriam estar nulos, citação inconsistente e sem esquema obrigatório. Converter isso em JSON limpo não é uma mudança de formato — é um problema de limpeza de dados.

Este guia aborda quando fazer a mudança, o que acontece durante a conversão e como lidar corretamente com os casos especiais — seja com um rápido Conversor CSV para JSON ou um script personalizado.

CSV versus JSON: O verdadeiro trade-off

O CSV é compacto, universalmente legível e fácil de importar em planilhas. Para dados tabulares planos — exportações de bancos de dados, pipelines de análise, registros financeiros — ainda é a forma correta. Se seus dados se encaixam em linhas e colunas sem aninhamento, o CSV é suficiente.

O JSON se torna a escolha melhor quando:

  • Seus dados têm aninhamento ou hierarquia (um usuário com múltiplos endereços)
  • Você precisa de informações explícitas de tipo (o número 42 versus a string '42')
  • Você está alimentando dados para uma API ou uma aplicação em JavaScript
  • Você deseja que o nulo seja representado explicitamente, e não apenas uma célula vazia

O trade-off não é sobre qual formato é 'melhor'. É sobre se a estrutura de seus dados ultrapassa o que o CSV pode representar.

Os Problemas que o CSV Cria

Antes de converter, você precisa entender o que está errado.

Nenhum padrão para nulos. Uma célula vazia no CSV pode significar nulo, zero, uma string vazia ou dados ausentes. Não há forma de saber a partir do arquivo. Uma coluna vazia pode significar 'desconhecido' em um sistema e '0' em outro. age Citação inconsistente.

Valores com vírgulas devem ser envolvidos em aspas duplas ( ), mas nem todos os exportadores seguem a especificação. Você encontrará vírgulas sem aspas, aspas desalinhadas e células que abrem uma aspa mas nunca a fecham."Portland, OR"Problemas de codificação.

Os arquivos CSV chegam frequentemente com BOM UTF-8, caracteres Windows-1252 ou uma mistura dos dois. Aspas inteligentes, traços em em e caracteres acentuados atrapalham analisadores que esperam ASCII limpo. Nenhuma informação de tipo.

Cada valor no CSV é uma string. O número 42, o valor booleano verdadeiro e a data 2024-01-01 são todos armazenados como texto. Converter blindamente para JSON resulta em um documento cheio de strings onde você esperava números e valores booleanos. Como Converter Corretamente

Os mecanismos são simples: cada linha do CSV se torna um objeto JSON, com os cabeçalhos de coluna como chaves. O problema é tudo o que acontece antes e depois dessa transformação.

Coerção de tipo.

Uma coluna cheia de inteiros deve se tornar números JSON. Uma coluna com valores 'verdadeiro'/'falso' deve se tornar booleanos. Mas uma coluna de código de ZIP que parece um inteiro (90210) deve permanecer como string — converter isso destrói os zeros iniciais. Tratamento de nulos.

Células vazias precisam de uma decisão: converter para , ignorar a chave inteiramente ou usar um valor padrão. Escolha uma e mantenha consistência. nullFalta de campos.

Se uma linha tiver menos colunas do que os cabeçalhos, seu analisador precisa lidar com isso de forma adequada — seja preenchendo com ou ignorando a linha. null Aqui está um snippet em Python que trata os três casos:

encoding remove o BOM se presente.

import csv
import json

def coerce_value(value):
    if value == '':
        return None
    try:
        return int(value)
    except ValueError:
        pass
    try:
        return float(value)
    except ValueError:
        pass
    if value.lower() in ('true', 'false'):
        return value.lower() == 'true'
    return value

def csv_to_json(csv_path, json_path):
    with open(csv_path, encoding='utf-8-sig') as f:  # utf-8-sig strips BOM
        reader = csv.DictReader(f)
        rows = []
        for row in reader:
            rows.append({k: coerce_value(v) for k, v in row.items() if k})

    with open(json_path, 'w', encoding='utf-8') as f:
        json.dump(rows, f, indent=2, ensure_ascii=False)

csv_to_json('input.csv', 'output.json')

O utf-8-sig tentativa de coerção numérica na ordem: inteiro primeiro, depois float, depois booleano, depois string. O coerce_value filtro remove colunas falsas causadas por vírgulas no cabeçalho. if k JSON aninhado a partir de CSV plano

O CSV não pode representar aninhamento diretamente, mas existem duas estratégias comuns.

Notação de chave com ponto.

Alguns exportadores de CSV usam cabeçalhos como . Um passo pós-processamento divide pelo ponto e constrói objetos aninhados: address.city e address.zipAgrupamento e aninhamento.

def unflatten(row):
    result = {}
    for key, value in row.items():
        parts = key.split('.')
        d = result
        for part in parts[:-1]:
            d = d.setdefault(part, {})
        d[parts[-1]] = value
    return result

Se múltiplas linhas representam filhos de um mesmo pai (itens de pedido sob um pedido), agrupe pelo ID do pai e construa o array aninhado após a conversão. Nenhum desses métodos pertence a um passo rápido de conversão — se você está fazendo isso, está escrevendo um script de transformação, e não apenas mudando o formato. Qual Ferramenta Usar

Para um CSV limpo e bem formatado que precisa apenas de uma mudança de formato: use um conversor online

. Cole, converta, finalize. Sem configuração, sem dependências. Conversor CSV para JSONPara um CSV com problemas conhecidos — problemas de codificação, citação inconsistente, coerção de tipo ou nulos — escreva um script. O snippet em Python acima trata a maioria dos casos do mundo real. O pandas é uma opção também (

), mas faz decisões de coerção próprias que podem não corresponder ao que você deseja.pd.read_csv() + df.to_json()Para umas linhas rápidas no terminal,

Miller ) é a melhor solução: (mlrMiller trata corretamente a citação, a codificação e campos faltantes de forma nativa. É a melhor maneira de ir de um CSV problemático para JSON limpo sem escrever nenhum código.

mlr --icsv --ojson cat input.csv > output.json

Casos Especiais do CSV e Como Lidar Com Eles

Problema do CSV

O que o JSON recebeComo lidarCélula vazia
ou chave ausentenull Decida de forma antecipada; mantenha consistência em todas as linhasString que parece numérica (código de ZIP)
Perde os zeros iniciais se for coerçidoMantenha como string; coerça apenas colunas que você controlaVírgula no final do cabeçalho
Chave vaziaem todas as linhas "" Use um filtro comquando construir os objetos if k BOM UTF-8 no início do arquivo
Erro de análise ouna primeira chave Abra comNova linha dentro de uma célula encoding='utf-8-sig'
Quebra analisadores simples linha a linhaUse um analisador real de CSV, nãoem uma coluna booleana split(',')
"true"/"false" string, não"true" booleano true Coerção explícita após comparação em minúsculasA Mudança de Formato é Fácil. Os Dados Não São.

Um conversor CSV para JSON trata a parte estrutural em segundos. O que leva tempo é entender o que realmente está no seu arquivo — os nulos, as peculiaridades de codificação, as colunas que parecem números mas não são. Escreva a coerção de tipo e o tratamento de nulos de forma explícita em vez de confiar em uma ferramenta para adivinhar, e você evitará os erros downstream que surgem de dados incorretos silenciosamente.

CSV para JSON: Quando converter e como manter seus dados limpos 2

Quer eliminar anúncios? Fique sem anúncios hoje mesmo

Instale nossas extensões

Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida

Ao Extensão do Chrome Ao Extensão de Borda Ao Extensão Firefox Ao Extensão Opera

O placar chegou!

Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!

ANUNCIADO Remover?
ANUNCIADO Remover?
ANUNCIADO Remover?

Notícias com destaques técnicos

Envolver-se

Ajude-nos a continuar fornecendo ferramentas gratuitas valiosas

Compre-me um café
ANUNCIADO Remover?