Convertidores de datos · 5 minutos de lectura
JSON a CSV: aplanar datos anidados sin perder significado
CSV sigue siendo el formato que se abre en cualquier cosa: hojas de cálculo, herramientas de BI, sistemas financieros, la computadora portátil de un revisor. Convertir JSON a CSV es principalmente una cuestión de qué hacer con las partes anidadas, porque una tabla tiene una fila por registro y columnas fijadas de antemano, mientras que JSON felizmente se anida tan profundamente como quiera.
Actualizado
El problema de la columna
Dos reglas hacen que una conversión de JSON a CSV sea predecible. En primer lugar, las columnas son la unión de todas las claves en todos los registros: una clave que aparece en un solo objeto aún obtiene una columna, vacía en otros lugares. En segundo lugar, cada fila debe emitir valores en el mismo orden. Hacer algo mal produce un archivo que se abre bien y se desalinea silenciosamente desde la primera fila donde faltaba una clave.
Aplanar objetos anidados
La técnica convencional es la notación de puntos: `address` que contiene `city` y `postcode` se convierte en `address.city` y `address.postcode`. Eso mantiene cada valor visible y consultable en la hoja de cálculo, a costa de encabezados más largos. Las estructuras profundamente anidadas pueden producir nombres difíciles de manejar, así que aplana un nivel donde controlas los datos y deja que la herramienta se aplane completamente cuando estés explorando.
{"id": 7, "customer": {"name": "Ada", "plan": "pro"}}
→ id,customer.name,customer.plan
7,Ada,pro
Arrays: la parte que se aplana mal
Se puede unir una serie de escalares en una celda con un separador, lo cual está bien para etiquetas y aceptable para listas cortas. Una serie de objetos (por ejemplo, líneas de pedido) no pertenecen a una sola celda: únalas y no podrá sumar las cantidades; indexelo en `items.0.sku`, `items.1.sku`, y las columnas dependen de cuántos elementos tenía cada pedido. Cuando llegas a ese caso, los datos quieren dos archivos CSV, uno por tabla, vinculados por una clave.
Si una celda contiene una coma, una comilla o una nueva línea, se debe entrecomillar y duplicar las comillas internas. La salida generada maneja esto; el CSV editado a mano generalmente no lo hace, razón por la cual las importaciones fallan de manera intermitente en las filas que contienen direcciones.
Hacer que el archivo se comporte en Excel
Excel asume la codificación del sistema a menos que se indique lo contrario, por lo que los caracteres acentuados pueden corromperse. Emitir UTF-8 con una marca de orden de bytes evita eso; sin él, el mismo archivo que se ve perfecto en Numbers u Sheets se muestra mojibake en Excel. También vale la pena citar los identificadores numéricos largos (números de tarjetas, SKU grandes) para que Excel no los convierta a notación científica.
Cuando CSV es la salida incorrecta
Si el consumidor es un programa, CSV desecha información de tipo y anidamiento sin ningún beneficio; JSON líneas o una carga de base de datos es mejor. CSV es para humanos con hojas de cálculo: informes, exportaciones, conciliación. Elegirlo deliberadamente, y no por costumbre, es la mitad del trabajo. El conversor de YamlBox JSON a CSV se ejecuta completamente en el navegador, por lo que una exportación que contenga filas de clientes nunca sale de su máquina.
JSON a CSV — preguntas frecuentes
¿Cómo se manejan los objetos anidados al convertir JSON en CSV?
Están aplanados con notación de puntos de forma predeterminada: `customer.name` se convierte en su propia columna. En su lugar, puede mantener los valores agrupados, pero las columnas aplanadas son las que hacen que el archivo se pueda filtrar y girar en una hoja de cálculo.
¿Por qué los caracteres acentuados aparecen mal en Excel después de la conversión?
Excel lee el archivo utilizando la codificación del sistema local a menos que una marca de orden de bytes indique lo contrario. Exportar UTF-8 con una lista de materiales mantiene los nombres intactos; sin él, los mismos datos se muestran correctamente en Google Sheets y de forma incorrecta en Excel.
¿Puedo convertir una matriz de objetos a CSV?
Las columnas provienen de la unión de claves en todos los registros, por lo que una matriz de objetos de formas mixtas aún produce una tabla válida con espacios en blanco donde faltaba una clave. Las matrices dentro de esos objetos son el caso que necesita dividirse en un segundo archivo.
Herramientas mencionadas en esta publicación.
Más artículos para leer
5 minutos de lectura
CSV a JSON: de la hoja de cálculo a los datos estructurados
Convierta CSV en JSON en el navegador: filas de encabezado, delimitadores, reglas de citación y manejo de tipos explicados, con las exportaciones de hojas de cálculo que rompen los analizadores.
6 minutos de lectura
Excel a JSON: convertir libros en datos estructurados
Convierta Excel a JSON en el navegador desde XLSX libros: encabezados, series de fechas, fórmulas y varias hojas explicadas, sin cargar nada.
5 minutos de lectura
Markdown tablas: generarlas en lugar de contar tuberías
Cree tablas de rebajas con sabor GitHub a partir de filas u hojas de cálculo: alineación, tuberías de escape y cuándo una tabla es la elección incorrecta para su archivo README.