Convertir JSON a CSV
Convierte respuestas de API, exportaciones y JSON Lines en un CSV que se abre sin problemas en Excel: los registros se encuentran solos, los campos anidados se aplanan en columnas legibles y los ID grandes se conservan dígito por dígito.
- Nunca se guarda
- Sin filas ni esperas
- Sin registro, sin marca de agua
Cómo funciona
Agrega el JSON
Suelta un archivo .json o .jsonl, o pega el JSON directamente en el cuadro.
Elige los registros
La lista de registros se encuentra automáticamente, incluso muy dentro de data.items. Elige cómo se escriben los arrays y revisa la vista previa.
Descarga
Un CSV con el delimitador y la codificación que necesitas, listo para Excel, Google Sheets o una base de datos.
Convertir un árbol en una cuadrícula
JSON es un árbol y CSV es un rectángulo, y toda la conversión consiste en cómo pasar de uno a otro. El caso limpio es un array de objetos que comparten todos las mismas claves: cada objeto es una fila, cada clave una columna, y no se pierde nada. Así se ven la mayoría de las respuestas de API y de las exportaciones, y por eso normalmente funciona sin más. Todo lo complicado viene de documentos que no tienen esa forma.
Los objetos anidados se aplanan uniendo sus claves, así que un objeto de dirección dentro de un cliente se convierte en columnas como address.city y address.postcode, una convención que toda hoja de cálculo maneja y que ningún estándar define. Las claves que aparecen en algunos objetos y en otros no se convierten en columnas vacías en las filas que no las tenían, y esa es la respuesta correcta: la alternativa es descartar datos que solo tienen algunos registros.
Los arrays anidados son donde una cuadrícula realmente no puede seguir. Un registro con tres líneas de pedido dentro es una fila que contiene una lista, no tres filas: convertirlo en tres duplicaría todos los demás campos y cambiaría sin avisar lo que significan los datos. Por eso un solo array de objetos se expande en filas y los demás se escriben como texto dentro de su celda. Si lo que necesitas son las líneas de pedido y no los pedidos, apunta la conversión a ese array; un árbol con dos listas en paralelo no tiene un único rectángulo correcto, y elegir uno es una decisión que solo tú puedes tomar.
Hay dos detalles que dan problemas a la salida. Los valores que contienen una coma, comillas o un salto de línea se ponen entre comillas para que se conserven, lo cual es CSV correcto y se ve raro si inspeccionas el archivo en bruto. Y un identificador numérico largo es un riesgo cuando el CSV llega a una hoja de cálculo: Excel lo leerá como número, lo redondeará más allá de quince dígitos y le quitará cualquier cero inicial, un problema que introduce la hoja de cálculo y no la conversión.
Si buscas otra cosa
jq es la herramienta adecuada cuando la estructura hay que decidirla en lugar de adivinarla: jq -r '.orders[] | [.id, .customer.name, .total] | @csv' toma exactamente los campos que quieres del nivel exacto que quieres, que es el control que un aplanador automático no puede ofrecer. Además procesa en streaming, así que el tamaño del archivo deja de ser un problema.
Para datos anidados en general, Miller (mlr --ijson --ocsv flatten) y pandas.json_normalize de Python te dan control explícito sobre cuánto aplanar y qué hacer con las listas. Y si el JSON es realmente jerárquico y no tabular, convertirlo a CSV puede ser directamente una mala idea: una base de datos o un archivo JSON delimitado por líneas conserva la estructura que una cuadrícula está a punto de descartar.
Preguntas frecuentes
¿Cómo se convierte el JSON anidado en columnas?
Cada campo anidado se convierte en una columna con el nombre de su ruta: {"address": {"city": "Oslo"}} da una columna address.city. Las columnas aparecen en el orden en que surgen por primera vez en tus datos, no en orden alfabético, y los registros a los que les falta un campo simplemente dejan esa celda vacía.
¿Qué pasa con los arrays?
Tú eliges: unir los valores en una celda ("rojo; verde"), repartirlos en columnas numeradas (tags.0, tags.1), conservarlos como texto JSON o, para un array de objetos como las líneas de un pedido, escribir una fila por elemento con los campos del registro principal repetidos.
¿Los números grandes se conservan exactos?
Sí. Los ID que superan lo que JavaScript puede representar (los de Twitter, Discord y bases de datos de 64 bits) se copian dígito por dígito, mientras que la mayoría de los convertidores redondean sin avisar 1234567890123456789 a 1234567890123456800.
¿Admite JSON Lines (NDJSON)?
Sí. Un archivo con un objeto JSON por línea se reconoce automáticamente, y cada línea se convierte en una fila.
¿Qué pasa si mi JSON tiene un error?
Obtienes la línea y la columna exactas con el texto problemático resaltado, y una explicación clara; por ejemplo, una coma al final o comillas simples copiadas de código JavaScript.
¿Se guardan mis datos en algún lugar?
No. El JSON se lee y el CSV se escribe aquí; no se envía nada a ningún lado y no se guarda nada.
Conviene saber: Solo se puede expandir en filas un array de objetos a la vez; los demás arrays se escriben dentro de su celda. Los archivos muy grandes están limitados por la memoria de tu navegador.
Agrega esta herramienta a tu sitio web
Gratis para cualquier blog, página de clase o artículo de ayuda. Pega un fragmento de código y tus visitantes podrán usarla directamente en tu página.
Más Herramientas de hojas de cálculo
CSV a JSON
CSV a JSON con tipos y estructura anidada
CSV a Excel
CSV a XLSX con números y fechas reales
XML a Excel
Registros XML en una hoja de Excel con formato
Excel a XML
Filas convertidas en XML limpio y bien formado
Excel a CSV
Cualquier hoja a CSV, con la codificación que necesitas
ODS a XLSX
Hojas de cálculo de LibreOffice como libros de Excel