Datos y hojas de cálculo · CSV Limpiador
Conversión entre CSV y JSON: formas, tipos y lo que se pierde
· Cómo funciona
csv json formatos de datos
CSV es texto plano y JSON son datos anidados y escritos, por lo que la conversión entre ellos implica decisiones. Esta publicación explica las formas JSON comunes para datos tabulares, cómo se infieren o no los tipos y qué no puede sobrevivir al viaje de ida y vuelta.
Una API quiere JSON, la exportación es CSV y cada número llega como una cadena: por qué los dos formatos no coinciden en cuanto a los tipos
Una exportación de hoja de cálculo puede mostrar 42 sin decir si esos caracteres significan un recuento, un código de producto o un identificador. JSON puede distinguir un número de una cadena, pero la fuente CSV no puede proporcionar esa distinción. Por lo tanto, ToolAcre elige la representación conservadora: cada celda se convierte en una cadena JSON, que incluye dígitos, palabras reales y celdas vacías.
Esa decisión mantiene intacto texto como 0012 y hace que la conversión sea predecible para una integración de API. También significa que el código posterior debe convertir campos bajo su propio esquema antes de realizar operaciones aritméticas. Tratar el archivo generado como si ya estuviera escrito simplemente traslada una suposición del convertidor a un código de aplicación menos visible.
La forma de destino habitual: una serie de objetos codificados por encabezado y, por lo tanto, los encabezados deben ser limpios y únicos.
La ruta produce una matriz de nivel superior con un objeto para cada fila de datos. Las celdas del encabezado se convierten en claves de objeto y los valores se toman de las mismas posiciones de las columnas. Un tercer encabezado en blanco se convierte en column_3, mientras que un segundo encabezado llamado id se convierte en id_2 en lugar de sobrescribir el primer campo de id.
Los nombres limpios y únicos son útiles, pero el convertidor no escribe en minúsculas, translitera ni reemplaza espacios. Recorta un encabezado solo mientras calcula la clave y luego inventa un nombre posicional o un sufijo numérico cuando es necesario. Si una API requiere customer_email en lugar de Customer Email, cambie el nombre de esa columna deliberadamente antes de confiar en el contrato de salida.
Formas alternativas: conjunto de conjuntos y objetos orientados a columnas, y cuándo cada uno se adapta mejor
El esquema proponía matrices de matrices y objetos orientados a columnas como objetivos seleccionables. Son diseños de datos razonables, pero esta interfaz no los ofrece. Su salida es siempre una matriz JSON de registros planos codificados por la primera fila CSV, sangrados con dos espacios para una inspección legible.
Esa elección limitada elimina la ambigüedad sobre dónde reside el nombre de una columna y mantiene todos los registros con la misma forma. Si otro consumidor espera matrices, transforme el JSON descargado según el esquema de ese consumidor. Afirmar que ToolAcre elige entre varios diseños describiría controles y ramas que no existen en la configuración o el código del panel.
Este convertidor emite una forma: una matriz de objetos planos de nivel superior
No se produce ninguna adivinanza de tipo. El texto CSV 42 se convierte en "42", falso se convierte en "falso" y un espacio en blanco se convierte en "" en lugar de nulo. Esto es explícito en el registro y la implementación de la herramienta, que asigna celdas directamente a propiedades de cadena. La ruta no inspecciona una columna y decide que todos los valores que no estén vacíos sean numéricos.
La preservación de cadenas también separa este artículo de la discusión publicada sobre aplicaciones de hojas de cálculo que cambian los ceros iniciales, las fechas y los identificadores largos. Aquí el punto es el contrato real del convertidor: evita ese tipo de coerción. Los consumidores siguen siendo responsables de analizar las cantidades conocidas y dejar intactos los identificadores.
Los tipos se conservan como texto; ToolAcre no realiza ninguna inferencia
En la dirección inversa, ToolAcre acepta una matriz JSON de nivel superior cuyos elementos son objetos. Crea columnas a partir de la unión de claves de cada objeto, en el orden en que se ven por primera vez, de modo que no se pierda un campo introducido por un registro posterior. Las propiedades faltantes, nulas y no definidas se convierten en celdas CSV vacías.
Un objeto o matriz almacenado dentro de una propiedad se serializa como texto JSON dentro de esa celda. Esto conserva una representación textual pero no convierte la estructura anidada en columnas o filas adicionales. Una raíz que no sea una matriz y una matriz que contenga valores primitivos se rechazan porque ninguna coincide con el modelo de tabla que admite esta ruta.
JSON-to-CSV acepta una matriz de objetos y escribe valores anidados como texto JSON
Considere el nombre, activo, recuento seguido de Ada, verdadero, 007. El resultado JSON es una matriz que contiene un objeto con el nombre "Ada", activo "verdadero" y recuento "007". La conversión de esa matriz de objetos planos produce las mismas tres celdas textuales porque ninguna inferencia de tipos eliminó los ceros ni convirtió la palabra de aspecto booleano.
Ahora agregue un encabezado en blanco antes de otro valor. La clave JSON se convierte en columna_4, por lo que los datos siguen siendo accesibles aunque falte el nombre de la fuente. Sin embargo, agregue una celda adicional más allá del ancho del encabezado y el cargador advertirá sobre una fila irregular; esa celda sobrante no tiene clave y no está en JSON.
Lo que esto no cubre: JSON profundamente anidado, validación de esquema y transmisión de documentos JSON de gran tamaño
La ruta no es un validador de esquema, un acoplador recursivo ni un procesador de transmisión JSON. Acepta una forma documentada e informa JSON no válidas o raíces no compatibles con un error específico. Los registros profundamente anidados necesitan un mapeo diseñado en torno a su dominio en lugar de una promesa automática de que la puntuación en una clave crea una estructura.
La verificación del archivo de entrada permite archivos hasta el 50 MB configurado, y el análisis CSV ocurre en un trabajador. Esos hechos no establecen la transmisión: el texto del archivo y las filas completadas aún se materializan para la conversión. Para flujos de trabajo JSON muy grandes, utilice un sistema cuya implementación documente explícitamente el análisis incremental en lugar de inferirlo aquí.
Validación de esquema, matrices primitivas y raíces que no son matrices están fuera de la forma aceptada
La conversión es un conjunto visible de opciones: primera fila como claves, objetos planos como registros y cadenas como valores. ToolAcre hace que esas elecciones sean estables en lugar de adivinar a partir de una muestra. Los encabezados en blanco y repetidos reciben claves deterministas, mientras que las entradas irregulares salen a la superficie antes de que una plusvalía sin nombre pueda desaparecer desapercibida.
Utilice la vista previa para confirmar el delimitador y la forma de la fila, resolver las advertencias y luego descargar o copiar el JSON. El archivo resultante es adecuado para código que conoce su propio esquema. Intencionalmente no sustituye ese esquema, y su restricción es lo que protege las identificaciones textuales durante el cambio de formato.