Para convertir JSON anidado a CSV, utilice un conversor de JSON a CSV online que le permita elegir qué array JSON se convertirá en las filas del CSV. Esta elección es más importante de lo que suele parecer. Las exportaciones JSON reales suelen comenzar con metadatos, información de paginación u objetos contenedores, mientras que los registros que necesita se encuentran en una ruta como results, data.items o payload.records.
Yo suelo plantear la conversión de JSON a CSV como tres decisiones:
- ¿Qué array debe convertirse en filas?
- ¿Qué campos de objetos anidados deben convertirse en columnas?
- ¿Qué arrays deben combinarse, conservarse como JSON o expandirse en filas independientes?
Una vez resueltas estas cuestiones, el resto sigue el flujo habitual de trabajo con un CSV. Puede previsualizar el resultado, comprobar las columnas y descargar un archivo CSV compatible con una hoja de cálculo, un CRM, una herramienta de BI o un proceso de limpieza de datos.
📌 La versión corta
Empiece por decidir qué debe representar cada fila del CSV. En este ejemplo, quiero una empresa por fila, por lo que el nodo de filas es
$.results. Después, puedo aplanar las métricas de la empresa y decidir qué hacer con arrays comocontactsytags.
En esta guía utilizaré una exportación JSON anidada con 20.000 registros de empresas dentro de results. El mismo proceso sirve para respuestas de API, resultados de scraping, registros de webhooks, exportaciones de CRM y datos de marketplaces cuyos registros relevantes no se encuentran en la raíz del JSON.
Enlaces rápidos:
- Ejemplo de archivo JSON anidado
- Convertir JSON anidado a CSV en Datablist
- Elegir el nodo de filas adecuado
- Aplanar objetos JSON anidados
- Gestionar arrays dentro de las filas JSON
- Revisar y descargar el CSV
Ejemplo de archivo JSON anidado
Para este ejemplo, imagine una exportación JSON de gran tamaño procedente de una API o herramienta de scraping. El archivo pesa unos 8,8 MB y contiene 20.000 registros dentro de un array results de nivel superior.
El objeto raíz tiene este aspecto:
{
"meta": {
"generatedAt": "2026-07-04T10:00:00Z",
"source": "stress_test"
},
"results": [
{
"id": 0,
"name": "NbDXeG4Gyg",
"website": "https://example-0.com",
"contacts": [
{
"name": "Ava Martin",
"emails": ["ava@example-0.com"],
"phones": ["+1 555 0100"]
},
{
"name": "Noah Lee",
"emails": ["noah@example-0.com"],
"phones": []
}
],
"tags": "enterprise",
"metrics": {
"employees": 124,
"revenue": {
"amount": 476171,
"currency": "USD"
}
},
"createdAt": "2026-06-25T09:12:00Z"
},
{
"id": 1,
"name": "DwwGmkzmBi",
"website": "https://example-1.com",
"contacts": [
{
"name": "Mia Chen",
"emails": ["mia@example-1.com"],
"phones": ["+1 555 0101"]
}
],
"tags": ["saas", "mid-market"],
"metrics": {
"employees": 47,
"revenue": null
},
"createdAt": "2026-06-26T14:33:00Z"
}
]
}
Este es el tipo de archivo que plantea dificultades a los conversores básicos. Los registros no forman el objeto raíz, sino que están dentro de results. Además, contienen objetos y arrays anidados, valores que pueden ser tanto strings como arrays, valores nulos y fechas.
🔍 Por qué este archivo es una buena prueba
Un array JSON plano solo pone a prueba el caso más sencillo. Este archivo reúne las decisiones importantes de una exportación real: metadatos contenedores, un array de registros anidado, campos de objetos, campos de arrays, valores mixtos y valores nulos.
Esta es la estructura de las primeras filas:
| Fila | Formato de website | Número de contactos | Formato de tags | Ingresos |
|---|---|---|---|---|
| 0 | String | 2 | String | Importe y moneda |
| 1 | String | 2 | Array | Nulo |
| 2 | Array | 1 | Array | Nulo |
El CSV de destino debe contener una fila por empresa. Quiero que campos útiles como id, name, website, employees, amount, currency y createdAt aparezcan como columnas. Para campos como contacts y tags, debo decidir cuánto de su estructura quiero conservar.
Convertir JSON anidado a CSV en Datablist
Abra el conversor de JSON de Datablist. Puede pegar el JSON en el editor o subir un archivo .json.
Para una respuesta pequeña de una API, pegar el contenido es suficiente. Para una exportación más grande, prefiero subir el archivo, ya que así evito recortarlo por accidente al copiar y pegar. El contenido se lee en el navegador y la conversión se ejecuta localmente en él, en lugar de enviarse a los servidores de Datablist.
Una vez cargado el JSON, Datablist analiza su estructura y busca arrays de objetos. Admite raíces JSON que sean arrays u objetos y, después, examina rutas anidadas como $.results, $.data.items u otros arrays más profundos.
Si el archivo resulta difícil de interpretar, a veces lo abro primero en JSONCrack. Esta herramienta muestra un árbol visual que ayuda a localizar el array que debe convertirse en filas. Es un paso opcional, pero útil cuando el archivo contiene varios arrays posibles.
En este ejemplo, el nodo de filas correcto es:
$.results
Elijo $.results porque quiero una fila por empresa. Cada elemento de ese array se convierte en una fila del CSV.
Datablist puede recomendar un nodo de filas, pero aun así conviene comprobarlo manualmente. Es aquí donde se producen la mayoría de los errores de conversión. Un archivo JSON puede contener un array principal de empresas, un array secundario de contactos y otro array secundario de tags o eventos. Todos son arrays, pero solo uno corresponde al CSV que desea obtener.
⚠️ Cambiar el nodo de filas cambia el conjunto de datos
Tanto
$.resultscomo$.results[].contactsson nodos de filas válidos, pero no producen el mismo CSV. Elija el array principal si quiere filas de cuentas. Elija el array secundario si los elementos anidados constituyen el conjunto de datos que necesita.
Para este artículo, mantengo el nodo principal:
$.resultssignifica una empresa o cuenta por fila.$.results[].contactssignificaría un contacto por fila.
La segunda opción también puede ser correcta, pero cambia el resultado. Un CSV de contactos resulta útil cuando necesita una lista de personas. Un CSV de empresas es más adecuado para limpiar cuentas, enriquecer empresas, importar registros en un CRM o revisar métricas.
Elegir el nodo de filas adecuado
Un nodo de filas es el array JSON cuyos elementos se convierten en filas del CSV.
Estos son los ejemplos más habituales:
| Ruta JSON | Cuándo utilizarla |
|---|---|
$.results | Los registros están guardados bajo una clave results |
$.data.items | Una API incluye los registros dentro de un objeto data |
$.payload.records | Los webhooks o las exportaciones internas incluyen los registros bajo payload |
$.results[].contacts | Quiere un contacto anidado por fila |
Antes de elegir, suelo hacerme una pregunta: ¿qué debe representar cada fila?
Si una fila debe representar una empresa, cuenta, pedido, producto, anuncio o evento, elija el array principal. Si debe representar un contacto, email, artículo de pedido, precio, comentario o evento secundario, elija el array hijo.
Parece sencillo, pero cambia por completo el CSV.
Con $.results, el CSV conserva el contexto de la empresa. El campo contacts permanece dentro de la fila de la empresa como valor anidado, salvo que decida procesar los contactos por separado. Con $.results[].contacts, el CSV se convierte en una lista de contactos, pero los campos de la empresa principal no se incluyen automáticamente, a menos que el conversor incorpore esa función en una versión futura.
Mi opción predeterminada es comenzar por el array principal. Así obtengo una primera exportación más segura y puedo seguir examinando los arrays anidados más adelante. Solo cambio a un array hijo cuando sus elementos son el verdadero conjunto de datos.
Aplanar objetos JSON anidados
Los objetos anidados son el motivo por el que un conversor de CSV debe hacer algo más que transformar un formato de archivo en otro.
En el archivo del ejemplo, metrics es un objeto:
{
"metrics": {
"employees": 124,
"revenue": {
"amount": 476171,
"currency": "USD"
}
}
}
En una hoja de cálculo no quiero una única celda metrics que contenga un objeto JSON. Quiero columnas que pueda filtrar y ordenar:
employeesamountcurrency
Datablist detecta las rutas de objetos anidados y le permite elegir cuáles quiere aplanar. Mantengo aplanados los campos escalares útiles porque funcionan mejor en las herramientas para CSV.
En este ejemplo, aplanaría:
metrics.employeescomoemployeesmetrics.revenue.amountcomoamountmetrics.revenue.currencycomocurrency
El CSV de empresas esperado tendría este aspecto:
| Columna CSV | Valor de origen |
|---|---|
id | Identificador de la fila |
name | Nombre de la empresa o cuenta |
website | Sitio web, array combinado o string JSON, según los ajustes |
contacts | Datos de contactos anidados al exportar una empresa por fila |
tags | Etiquetas combinadas o texto original |
employees | Valor de metrics.employees |
amount | Valor de metrics.revenue.amount |
currency | Valor de metrics.revenue.currency |
createdAt | Fecha original o con formato |
Prefiero nombres de columnas fáciles de entender para la primera exportación. Si el archivo contiene nombres repetidos en objetos distintos, revise la vista previa antes de descargarlo. Por ejemplo, billing.amount y revenue.amount no deberían convertirse en una misma columna ambigua llamada amount sin comprobar antes el resultado.
💡 Mi configuración predeterminada para aplanar datos
Aplane los campos escalares que quiera filtrar, ordenar o importar como columnas. Conserve los objetos o arrays estructurados como JSON cuando aplanarlos pueda ocultar su significado o crear celdas difíciles de interpretar.
Gestionar arrays dentro de las filas JSON
Los arrays requieren una decisión aparte porque las celdas de un CSV contienen texto, mientras que los arrays JSON pueden representar conceptos muy distintos.
Una lista de tags no es lo mismo que una lista de contactos. Una lista de emails tampoco equivale a una lista de artículos de un pedido. Por eso, evito aplicar una única regla global cuando los arrays tienen significados diferentes.
Para el archivo del ejemplo, utilizaría estos ajustes:
| Campo | Tratamiento recomendado | Motivo |
|---|---|---|
tags | Combinar valores | Los tags son etiquetas sencillas y funcionan bien en una sola celda |
website | Combinar valores o conservar como JSON | Combínelos para facilitar la lectura o conserve el JSON si es importante mantener los distintos formatos |
contacts | Conservar como JSON en las filas de empresas | Los objetos de contacto tienen sus propios campos anidados |
contacts | Utilizar $.results[].contacts como nodo para las filas de contactos | Es la mejor opción cuando la lista de contactos es el resultado que necesita |
Datablist ofrece opciones para gestionar arrays, como combinar valores, conservarlos como strings JSON, tomar el primer elemento y aplicar ajustes específicos a cada caso.
Mi criterio predeterminado es sencillo:
- Combinar arrays simples, como los tags.
- Conservar los arrays estructurados como strings JSON si necesito preservar su contenido.
- Tomar el primer elemento solo cuando este tenga un significado claro, como un email principal.
- Cambiar el nodo de filas cuando cada elemento del array merezca su propia fila.
Para la exportación de empresas, mantengo contacts como un valor estructurado porque cada contacto tiene un nombre, emails y teléfonos. Aplanarlo en una sola celda haría que el CSV resultara confuso, mientras que tomar únicamente el primer contacto provocaría una pérdida de datos.
Para exportar contactos, seleccionaría $.results[].contacts. El CSV contendría entonces columnas de contactos como estas:
| Columna CSV | Valor de origen |
|---|---|
name | Nombre del contacto |
emails | Lista de emails combinada o string JSON |
phones | Lista de teléfonos combinada o string JSON |
La contrapartida es el contexto. Una exportación de empresas conserva intacta la fila de cada empresa. Una exportación de contactos se centra en las personas, pero los campos de la empresa principal no se copian automáticamente en cada fila de contacto, salvo que la herramienta incorpore esta función más adelante.
Configurar las opciones de salida
Cuando el nodo de filas, el aplanamiento y los ajustes de los arrays sean correctos, configure la salida CSV.
Normalmente empiezo con estos valores:
- Separador: coma para un CSV estándar.
- Fila de encabezados: activada.
- Formato de fecha: conservar el original, salvo que la hoja de cálculo de destino necesite uno más fácil de leer.
Utilice el punto y coma como separador cuando su herramienta de hojas de cálculo o su configuración regional espere archivos separados por punto y coma. Esto puede ser importante en España y otros países europeos, donde la coma suele utilizarse como separador decimal.
Para las fechas, prefiero conservar el formato de origen en la primera exportación. Si se utilizan marcas de tiempo ISO, será fácil analizarlas después y se mantendrá la información sobre la zona horaria. Si el CSV está destinado a un compañero sin perfil técnico, aplicar formato a las fechas puede facilitar la lectura.
Antes de descargar el archivo, compruebe las dos vistas previas:
- La vista previa de la tabla permite revisar las filas y columnas.
- La vista previa del CSV sin procesar permite comprobar los separadores, las comillas y los saltos de línea.
🔑 Revise la vista previa antes de exportar
La vista previa le permite detectar un nodo de filas incorrecto, columnas ausentes, arrays desordenados y problemas con el separador. Prefiero dedicarle 30 segundos a tener que solucionar después una importación fallida en un CRM o una hoja de cálculo.
También compruebo la vista previa del CSV sin procesar cuando hay arrays o texto con varias líneas. Solo lleva unos segundos y permite detectar una cantidad sorprendente de problemas de importación.
Revisar y descargar el CSV
Antes de descargarlo, repaso esta lista:
- ¿Coincide el número de filas con el nodo seleccionado?
- ¿Representan las filas la entidad que quería obtener?
- ¿Están
employees,amountycurrencyseparados en columnas útiles? - ¿Son legibles los arrays o se han conservado como JSON cuando su estructura es importante?
- ¿Los valores nulos de ingresos aparecen vacíos o son suficientemente claros para el siguiente paso?
- ¿Tienen las fechas el formato adecuado para la hoja de cálculo o herramienta de importación?
- ¿Utiliza la vista previa del CSV sin procesar el separador que esperaba?
A continuación, descargue el CSV. Cuando sube un archivo, el nombre del archivo descargado puede basarse en el nombre del original, lo que facilita identificar el origen del CSV.
Tras la exportación, abra el archivo en el editor de CSV de Datablist, Excel, Google Sheets o su siguiente herramienta de datos. En Datablist puede continuar con la limpieza, el filtrado, la deduplicación, el enriquecimiento o la traducción. Si genera varias exportaciones, puede comparar dos archivos CSV. Si el archivo es demasiado grande para otra herramienta, puede dividir el CSV en archivos más pequeños.
Resultado CSV esperado
Al seleccionar $.results, el resultado principal contiene una empresa o cuenta por fila.
| Columna CSV | Ruta JSON dentro de cada fila | Valor esperado |
|---|---|---|
id | $.id | Identificador de la fila |
name | $.name | Nombre de la empresa o cuenta |
website | $.website | String del sitio web, array combinado o string JSON |
contacts | $.contacts | Array de contactos combinado o en formato JSON al mantener una empresa por fila |
tags | $.tags | Etiquetas combinadas o string original |
employees | $.metrics.employees | Número de empleados |
amount | $.metrics.revenue.amount | Importe de los ingresos, cuando esté disponible |
currency | $.metrics.revenue.currency | Moneda de los ingresos, cuando esté disponible |
createdAt | $.createdAt | Fecha original o con formato |
Al seleccionar $.results[].contacts, el resultado cambia a un contacto por fila.
| Columna CSV | Ruta JSON dentro de cada contacto | Valor esperado |
|---|---|---|
name | $.name | Nombre del contacto |
emails | $.emails | Lista de emails combinada o string JSON |
phones | $.phones | Lista de teléfonos combinada o string JSON |
Ambas exportaciones son válidas, pero responden a necesidades diferentes.
Utilice la exportación por empresa para limpiar cuentas, revisar datos firmográficos, enriquecer registros de empresas o preparar importaciones en un CRM. Utilice la exportación por contacto cuando las personas sean el conjunto de datos objetivo.
Cuándo utilizar este proceso
Este proceso resulta útil siempre que JSON sea el formato de origen y CSV el formato de trabajo.
Algunos ejemplos habituales:
- Respuestas de API con metadatos, paginación y un array
resultsanidado. - Resultados de scraping mediante API con anuncios, productos, contactos o eventos.
- Exportaciones de CRM y RevOps donde las empresas contienen contactos, tags, métricas y campos personalizados.
- Exportaciones de marketplaces o catálogos de productos con variantes, precios, categorías y proveedores.
- Registros de webhooks donde los eventos están anidados dentro de un payload.
- Flujos de localización en los que quiera traducir el CSV resultante.
El patrón siempre es el mismo: localice el array que representa las filas, aplane los campos de objetos que necesite, decida cómo tratar los arrays y revise la vista previa antes de exportar.
Solucionar problemas al convertir JSON anidado a CSV
Si el JSON no es válido, compruebe primero el archivo de origen. La ausencia de comas, los logs de consola copiados, el texto añadido al final, las descargas incompletas y las comillas sin escapar pueden impedir el análisis. Suelo validar el archivo antes de cambiar los ajustes de conversión, porque un JSON no válido debe corregirse en el origen.
Si no se encuentra ningún nodo de filas, es posible que el archivo no contenga un array de objetos. Un único objeto formado solo por campos escalares no basta para este proceso. Las raíces primitivas, los strings, los números y los valores individuales no permiten crear filas CSV útiles.
Si la vista previa muestra filas incorrectas, cambie el nodo seleccionado. Normalmente significa que el conversor ha encontrado un array, pero no el que usted tenía en mente. Busque la ruta donde se encuentran los registros, como $.results, $.data.items o $.payload.records.
Si los contactos, tags, artículos de pedidos o eventos son difíciles de leer, ajuste el tratamiento de los arrays. Combine las listas sencillas. Conserve los arrays estructurados como JSON cuando quiera preservar los detalles. Cambie a un nodo de filas hijo cuando cada elemento anidado deba convertirse en una fila.
Si un archivo grande se procesa con lentitud, recuerde que el rendimiento del navegador y del dispositivo sigue siendo importante. Datablist ejecuta el análisis y la conversión en un web worker, por lo que el trabajo no se realiza en el hilo principal de la interfaz. Aun así, la memoria y la CPU de su equipo determinan los límites prácticos.
Si el CSV no se importa correctamente en otra herramienta, pruebe con un separador diferente, mantenga activada la fila de encabezados y revise la vista previa del CSV sin procesar. Las comillas y los saltos de línea pueden ser importantes cuando los valores JSON contienen texto, arrays u objetos anidados.
Qué ocurre en el navegador
Datablist analiza y convierte el JSON mediante un worker del navegador. Este examina los posibles nodos de filas, guarda en caché el objeto analizado, convierte el nodo seleccionado a CSV y devuelve la vista previa y el resultado a la interfaz.
Esto es importante por dos motivos.
En primer lugar, la conversión no se ejecuta en el hilo principal de la interfaz. Así, la página puede seguir utilizándose mientras se analiza el archivo.
En segundo lugar, el procesamiento se realiza localmente en su navegador, en vez de enviar el archivo a los servidores de Datablist para convertirlo. Esto resulta útil al trabajar con exportaciones de API, resultados de scraping o archivos de datos internos que no quiera subir a un conversor del lado del servidor.
Aun así, debe respetar sus procedimientos habituales para el tratamiento de datos. El procesamiento local en el navegador es útil, pero no sustituye las políticas de privacidad y cumplimiento normativo de su empresa.
Conclusión
Convertir JSON anidado a CSV consiste, ante todo, en elegir el nodo de filas correcto. Una vez seleccionado el array que debe transformarse en filas, el resto resulta mucho más sencillo.
Para el archivo del ejemplo, $.results genera una fila por empresa. Al aplanar metrics.employees, metrics.revenue.amount y metrics.revenue.currency, se crean columnas útiles para una hoja de cálculo. Los ajustes de los arrays determinan si campos como tags, website y contacts se convierten en texto legible, se conservan como JSON o se exportan por separado a nivel de contacto.
Abra el conversor de JSON a CSV, suba una exportación JSON anidada, seleccione el nodo de filas, revise la vista previa y descargue el CSV. Después, abra el archivo exportado en el editor de CSV de Datablist si necesita limpiarlo, filtrarlo, deduplicarlo, enriquecerlo o traducirlo.
FAQ
¿Cómo convertir JSON anidado a CSV?
Utilice un conversor que le permita seleccionar el array JSON que se transformará en filas. En Datablist, pegue o suba el JSON, elija el nodo de filas, aplane los campos útiles de objetos anidados, configure el tratamiento de los arrays, revise la tabla y descargue el CSV.
¿Puedo convertir JSON a CSV si los registros están en results?
Sí. Seleccione $.results como nodo de filas cuando cada elemento de results deba convertirse en una fila del CSV.
¿Cómo convertir data.items o payload.records a CSV?
Elija $.data.items o $.payload.records como nodo de filas si esa ruta contiene los objetos que quiere convertir en filas. La ruta exacta dependerá de la estructura del JSON.
¿Cómo aplanar campos JSON anidados en columnas CSV?
Active el aplanamiento para rutas de objetos anidados como metrics.revenue. Después, revise las columnas generadas en la vista previa antes de exportar.
¿Cómo debo gestionar los arrays dentro de las filas JSON?
Combine las listas sencillas, como los tags; conserve los arrays estructurados como strings JSON cuando necesite preservar su contenido, o elija un nodo de filas más profundo cuando cada elemento deba convertirse en una fila independiente.
¿Puedo convertir online un archivo JSON grande a CSV?
Sí, siempre que su navegador y dispositivo puedan procesarlo. Datablist utiliza un web worker para analizar y convertir los datos, aunque el rendimiento de archivos muy grandes seguirá dependiendo de su equipo.
¿Es seguro usar un conversor online de JSON a CSV con datos privados?
El conversor de Datablist procesa el archivo localmente en su navegador, en lugar de enviarlo a los servidores de Datablist para convertirlo. Aun así, debe respetar las normas de tratamiento de datos de su organización.
¿Qué es un nodo de filas al convertir JSON a CSV?
Un nodo de filas es el array JSON cuyos elementos se convierten en filas del CSV. Por ejemplo, $.results crea una fila por cada objeto del array results.
¿Qué ocurre si elijo $.results[].contacts en lugar de $.results?
El CSV pasa a contener una fila por contacto en lugar de una fila por empresa o cuenta. Los campos de la empresa principal no se incluyen automáticamente, salvo que la herramienta incorpore esa función más adelante.
¿Qué debo hacer después de exportar el CSV?
Ábralo en Datablist u otra herramienta de hojas de cálculo para limpiarlo, filtrarlo, deduplicarlo, enriquecerlo, traducirlo o importarlo en otro sistema.






