Dados e planilhas · CSV Limpador
Convertendo entre CSV e JSON: formas, tipos e o que se perde
· Como funciona
csv JSON formatos de dados
CSV é texto simples e JSON são dados digitados e aninhados, portanto, a conversão entre eles envolve decisões. Esta postagem explica as formas JSON comuns para dados tabulares, como os tipos são inferidos ou não e o que não pode sobreviver à viagem de ida e volta.
Um API quer JSON, a exportação é CSV e cada número chega como uma string — por que os dois formatos discordam sobre os tipos
Uma exportação de planilha pode mostrar 42 sem dizer se esses caracteres significam uma contagem, um código de produto ou um identificador. JSON pode distinguir um número de uma string, mas a fonte CSV não pode fornecer essa distinção. ToolAcre portanto escolhe a representação conservadora: cada célula se torna uma string JSON, incluindo dígitos, palavras verdadeiras e células vazias.
Essa decisão mantém textos como 0012 intactos e torna a conversão previsível para uma integração API. Isso também significa que o código downstream deve converter campos em seu próprio esquema antes de fazer aritmética. Tratar o arquivo gerado como já digitado apenas move uma suposição do conversor para um código de aplicativo menos visível.
A forma usual do alvo — uma matriz de objetos codificados por cabeçalho e por que os cabeçalhos precisam ser limpos e exclusivos
A rota produz um array de nível superior com um objeto para cada linha de dados. As células de cabeçalho tornam-se chaves de objeto e os valores são obtidos das mesmas posições de coluna. Um terceiro cabeçalho em branco torna-se coluna_3, enquanto um segundo cabeçalho denominado id torna-se id_2 em vez de substituir o primeiro campo de id.
Nomes limpos e exclusivos são úteis, mas o conversor não coloca letras minúsculas, translitera ou substitui espaços. Ele corta um cabeçalho apenas enquanto calcula a chave e, em seguida, inventa um nome posicional ou sufixo numérico quando necessário. Se um API exigir customer_email em vez de Customer Email, renomeie essa coluna deliberadamente antes de confiar no contrato de saída.
Formas alternativas — conjunto de matrizes e objetos orientados a colunas e quando cada um se ajusta melhor
O esboço propôs matrizes de matrizes e objetos orientados a colunas como alvos selecionáveis. São designs de dados razoáveis, mas esta interface não os oferece. Sua saída é sempre um array JSON de registros simples codificados pela primeira linha CSV, recuado com dois espaços para inspeção legível.
Essa escolha restrita elimina a ambiguidade sobre onde reside o nome de uma coluna e mantém todos os registros com o mesmo formato. Se outro consumidor espera matrizes, transforme o JSON baixado no esquema desse consumidor. Afirmar que ToolAcre escolhe entre vários layouts descreveria controles e ramificações que não existem na configuração ou no código do painel.
Este conversor emite uma forma: uma matriz de objetos planos de nível superior
Nenhuma adivinhação de tipo ocorre. O texto CSV 42 torna-se "42", false torna-se "false" e um espaço em branco torna-se "" em vez de nulo. Isso fica explícito no registro e implementação da ferramenta, que mapeia células diretamente para propriedades de string. A rota não inspeciona uma coluna e decide que todos os valores não vazios são numéricos.
A preservação de strings também separa este artigo da discussão publicada sobre aplicativos de planilha que alteram zeros à esquerda, datas e identificadores longos. Aqui a questão é o contrato real do conversor: ele evita esse tipo de coerção. Os consumidores continuam responsáveis por analisar quantidades conhecidas e deixar os identificadores intactos.
Os tipos são preservados como texto; ToolAcre não realiza nenhuma inferência
Na direção inversa, ToolAcre aceita um array JSON de nível superior cujos itens são objetos. Ele constrói colunas a partir da união de chaves em cada objeto, na ordem vista pela primeira vez, para que um campo introduzido por um registro posterior não seja perdido. Propriedades ausentes, nulas e indefinidas tornam-se células CSV vazias.
Um objeto ou array armazenado dentro de uma propriedade é serializado como texto JSON dentro daquela célula. Isto preserva uma representação textual, mas não transforma a estrutura aninhada em colunas ou linhas adicionais. Uma raiz que não seja de array e uma array contendo valores primitivos são rejeitadas porque nenhuma delas corresponde ao modelo de tabela que esta rota suporta.
JSON-to-CSV aceita uma matriz de objetos e grava valores aninhados como texto JSON
Considere name,active,count seguido por Ada,true,007. O resultado JSON é um array contendo um objeto com nome "Ada", ativo "true" e contagem "007". A conversão dessa matriz de objetos planos produz as mesmas três células textuais porque nenhuma inferência de tipo removeu os zeros ou converteu a palavra de aparência booleana.
Agora adicione um cabeçalho em branco antes de outro valor. A chave JSON torna-se coluna_4, portanto os dados permanecem acessíveis mesmo que o nome da fonte esteja faltando. Adicione uma célula extra além da largura do cabeçalho e o carregador avisará sobre uma linha irregular; essa célula excedente não tem chave e está ausente de JSON.
O que isso não cobre: JSON profundamente aninhado, validação de esquema e streaming de documentos JSON muito grandes
A rota não é um validador de esquema, nivelador recursivo ou processador de streaming JSON. Ele aceita uma forma documentada e relata JSON inválido ou raízes não suportadas com um erro específico. Registros profundamente aninhados precisam de um mapeamento projetado em torno de seu domínio, em vez de uma promessa automática de que a pontuação em uma chave cria estrutura.
A verificação do arquivo de entrada permite arquivos até o 50 MB configurado, e a análise de CSV acontece em um trabalhador. Esses fatos não estabelecem streaming: o texto do arquivo e as linhas completadas ainda são materializadas para conversão. Para fluxos de trabalho JSON muito grandes, use um sistema cuja implementação documente explicitamente a análise incremental em vez de inferi-la aqui.
Validação de esquema, matrizes primitivas e raízes não-matrizes estão fora da forma aceita
A conversão é um conjunto visível de opções: primeira linha como chaves, objetos planos como registros e strings como valores. ToolAcre torna essas escolhas estáveis em vez de adivinhar a partir de uma amostra. Cabeçalhos em branco e repetidos recebem chaves determinísticas, enquanto entradas irregulares aparecem antes que uma mais-valia sem nome possa desaparecer despercebida.
Use a visualização para confirmar o delimitador e o formato da linha, resolver avisos e, em seguida, fazer download ou copiar o JSON. O arquivo resultante é adequado para código que conhece seu próprio esquema. Intencionalmente, não é um substituto para esse esquema e sua restrição é o que protege os IDs textuais durante a mudança de formato.