Json To Csv LogoJson To Csv

¿Hay alguna forma de convertir JSON a CSV? Sí — 5 formas, elige según tu caso (Guía 2026)

Sí. Hay cinco formas prácticas de convertir JSON a CSV, y la adecuada depende de tu caso: un archivo puntual, un destino en hoja de cálculo, una tarea recurrente o un pipeline. Aquí están, todas probadas con el mismo archivo, además de los casos en los que convertir no es la jugada correcta.

Actualizado: 2026-10-179 min de lectura

El archivo de personal con el que se prueba cada forma

La mayoría de las guías de conversión describe cada método en abstracto, lo que hace imposible compararlos. Esta hace lo contrario: cada forma que verás abajo se ejecuta sobre el mismo archivo de tres registros, así que los resultados son directamente comparables. El archivo es pequeño pero no trivial: tiene un objeto anidado (dept con team y floor), una lista (skills) y los dos casos límite que hacen tropezar a las conversiones reales: un booleano (active) y una lista vacía (Lina no tiene skills).

Si un método no puede manejar este archivo limpiamente, tampoco manejará tu archivo real. Si puede, sabes exactamente qué aspecto tiene su salida antes de confiarle algo más grande. Ten el archivo en mente mientras lees: la respuesta correcta tiene seis columnas (id, name, dept.team, dept.floor, skills, active) y tres filas, con la celda de skills de Ana mostrando chat; phone y la de Lina vacía.

staff.json, the shared test file
[
  { "id": 1, "name": "Ana", "dept": { "team": "Support", "floor": 2 }, "skills": ["chat", "phone"], "active": true },
  { "id": 2, "name": "Ken", "dept": { "team": "Sales", "floor": 3 }, "skills": ["email"], "active": false },
  { "id": 3, "name": "Lina", "dept": { "team": "Support", "floor": 2 }, "skills": [], "active": true }
]

Forma 1: un conversor en línea — la forma sin instalar nada

Abre un conversor gratuito de JSON a CSV en línea, pega el JSON o sube el archivo, y descarga el CSV. Eso es todo el método, y para un archivo puntual es el adecuado: no hay nada que instalar, nada que aprender, y el resultado está listo en menos de un minuto. El conversor de este sitio se ejecuta por completo en tu navegador, así que el archivo nunca sale de tu equipo, y su interruptor de aplanado decide cómo se tratan los datos anidados.

Con el aplanado activado, el archivo de personal se convierte exactamente en la respuesta de seis columnas de arriba: dept se convierte en dept.team y dept.floor, la lista de skills se une en una sola celda con un separador de punto y coma, y la lista vacía de Lina se convierte en una celda vacía. Con el aplanado desactivado, el mismo archivo mantiene dept y skills como texto JSON dentro de celdas individuales: un CSV válido, pero no una tabla que puedas ordenar o filtrar. Nuestra guía anterior sobre aplanar JSON a CSV documenta el interruptor celda por celda, incluidos sus casos límite.

Los límites honestos: un conversor en línea es una herramienta de un archivo a la vez. Si necesitas convertir cincuenta archivos cada mañana, o la conversión tiene que ocurrir dentro de otro programa, alguna de las formas de abajo se ajusta mejor. Y si lo que quieres analizar es la lista en sí — una fila por skill, no una fila por persona — ningún conversor en línea hace eso; necesitas la receta de explotar (explode) de nuestra guía para aplanar los datos JSON.

Way 1 output: online converter, flattening on (verified)
id,name,dept.team,dept.floor,skills,active
1,Ana,Support,2,chat; phone,true
2,Ken,Sales,3,email,false
3,Lina,Support,2,,true

Forma 2: la hoja de cálculo que ya tienes — Power Query de Excel

Si el CSV va a terminar en una hoja de cálculo de todos modos, es posible que no necesites ningún conversor: Excel puede leer JSON directamente con Power Query. Abre un libro en blanco, ve a Datos, Obtener datos, Desde un archivo, Desde JSON, elige el archivo, y Power Query te muestra los registros. Expande la columna dept para aplanar el objeto anidado en las columnas team y floor, expande o extrae la columna skills según quieras una fila por skill o una sola celda unida, y luego Cerrar y cargar. El resultado llega como una tabla real de Excel, lista para filtrar y crear tablas dinámicas.

Dos cosas que debes saber antes de empezar. Primera: el paso de expansión es por columna anidada: un archivo con tres niveles de anidamiento necesita tres expansiones, y es fácil pasar por alto una y terminar con una columna de valores Record. Segunda: abrir un CSV terminado en Excel tiene sus propias trampas — un archivo UTF-8 puede abrirse con caracteres alterados, y un valor como 007 puede perder su cero inicial — por eso nuestra guía para crear CSV desde JSON cubre el hábito de validar reimportando: abre el resultado, comprueba los caracteres, comprueba los códigos, y solo entonces dalo por terminado.

Google Sheets es el único hueco de esta forma. Sheets no tiene importación nativa de JSON: no existe ninguna opción Archivo, Importar, JSON. Las rutas prácticas son pasar primero por un conversor en línea, o un pequeño Apps Script que obtenga y analice el JSON. Si ya estás en Sheets, la ruta del conversor es más rápida; si la importación tiene que repetirse a diario, la ruta del script gana.

Forma 3: código que ya usas — Python o jq

Si ya escribes código, Python y jq son los dos caballos de batalla, y discrepan en un punto instructivo. La función json_normalize de pandas en Python aplana los objetos anidados a columnas con notación de punto automáticamente — dept se convierte en dept.team y dept.floor sin ningún paso extra — pero deja las listas como cadenas de representación de Python a menos que las unas tú mismo. Ejecútala sin la unión y la celda de skills de Ana muestra ['chat', 'phone'], que es una lista impresa como texto, no un valor que puedas usar. La corrección de una línea con join está en el fragmento de abajo, y la salida entonces coincide exactamente con la del conversor en línea.

jq adopta el enfoque contrario: no hace nada automáticamente, y cada columna es explícita. Nombras cada campo, eliges la unión, y obtienes exactamente la fila de encabezado que escribiste. Esa explicitud es la verdadera fortaleza de jq para conversiones puntuales de archivos incómodos, y su debilidad para archivos anchos — un registro con cuarenta campos significa cuarenta expresiones. Para el archivo de personal, ambas herramientas producen las mismas seis columnas y tres filas, que es justo el punto: la forma cambia, la respuesta correcta no.

Una nota más de Python para el caso recurrente: json_normalize más explode convierte una lista en una fila por elemento, que es el movimiento de explotar que ningún conversor en línea ofrece. Si tu análisis necesita una fila por skill, esa es la receta — está cubierta en su totalidad, con un equivalente verificado en jq, en nuestra guía para aplanar los datos JSON.

Way 3 output: Python, json_normalize plus join (verified)
import json
import pandas as pd

rows = json.load(open('staff.json'))
df = pd.json_normalize(rows)
df['skills'] = df['skills'].apply(lambda v: '; '.join(v))
df.to_csv('staff.csv', index=False)

# staff.csv:
# id,name,skills,active,dept.team,dept.floor
# 1,Ana,chat; phone,True,Support,2
# 2,Ken,email,False,Sales,3
# 3,Lina,,True,Support,2

Forma 3, continuación: el comando de una línea de jq

La versión en jq de la misma conversión es un solo comando. La fila de encabezado se escribe a mano, luego cada registro se asigna a una fila: los campos anidados se abordan con puntos (dept.team), la lista se une con punto y coma, y @csv se encarga de las comillas. Ejecútalo sobre el archivo de personal y obtienes las mismas tres filas que en la versión de Python, con una diferencia cosmética: jq entrecomilla todos los campos de texto, así que la fila de encabezado muestra "id","name",... en lugar de id,name,.... Ambos son CSV válido; cualquier hoja de cálculo y cualquier parser los leen de forma idéntica.

jq se gana su lugar por una segunda razón: funciona con archivos demasiado grandes para abrir en un editor. El comando de una línea de arriba carga todo el archivo en memoria, lo cual está bien para cualquier cosa de hasta decenas de megabytes, pero jq también tiene un modo de streaming (la opción --stream) que procesa un archivo registro por registro. Si tu archivo JSON tiene cientos de megabytes, el jq en streaming o un script de Python por bloques es la forma; una pestaña del navegador no lo es.

Way 3 output: jq, explicit columns (verified)
jq -r '(["id","name","dept.team","dept.floor","skills","active"] | @csv),
  (.[] | [.id, .name, .dept.team, .dept.floor, (.skills | join("; ")), .active] | @csv)' staff.json

# "id","name","dept.team","dept.floor","skills","active"
# 1,"Ana","Support",2,"chat; phone",true
# 2,"Ken","Sales",3,"email",false
# 3,"Lina","Support",2,"",true

Forma 4: tu editor — VS Code

Si ya vives en VS Code, la conversión puede ocurrir sin salir del editor. La ruta más rápida es el terminal integrado: abre la carpeta, abre un terminal dentro de VS Code, y ejecuta el comando de Python o jq de la forma 3 — el CSV de salida aparece en la misma carpeta, y las extensiones de visor de Excel de VS Code o la vista previa integrada te permiten comprobarlo de inmediato. Para quienes prefieren clics en lugar de comandos, extensiones como Rainbow CSV o una extensión de JSON a CSV convierten el archivo abierto desde la paleta de comandos.

La verdadera ventaja de la ruta del editor es la iteración: cuando el JSON es un archivo de configuración o una respuesta de API que ya estás editando, convertir en el mismo lugar te mantiene en contexto, y la vista de diferencias del editor te muestra exactamente qué cambió. El recorrido completo — extensión, terminal y una tarea de una sola tecla — está en nuestra guía de VS Code, incluidas las trampas (una extensión que convierte los datos anidados en texto, un terminal que escribe en la carpeta equivocada). La versión corta: VS Code es un buen lugar para convertir, pero la conversión en sí sigue siendo una de las otras formas disfrazada de editor.

Forma 5: dentro de tu propia app — una llamada a una biblioteca

La quinta forma es para cuando la conversión no es una tarea puntual sino parte de algo que estás construyendo: un botón de exportar en un panel, un informe nocturno, un pipeline de datos. Entonces no recurres a ninguna herramienta: llamas a una función. El fragmento de abajo es el núcleo en JavaScript: recorrer los nombres de columna con puntos, unir los valores de lista, escapar cualquier cosa que contenga una coma, comillas o salto de línea duplicando las comillas y envolviendo la celda. Ejecútalo sobre el archivo de personal y produce exactamente las mismas filas que el conversor en línea, lo cual no es casualidad: el motor del conversor de este sitio es la misma idea, con los casos límite (filas irregulares, listas anidadas, objetos vacíos) resueltos.

La decisión aquí es construir o tomar prestado, y la respuesta honesta suele ser tomar prestado: json_normalize de pandas, una biblioteca CSV en tu lenguaje, o el patrón del motor de conversor de abajo superarán a una versión hecha a mano en casos límite. Escribe la tuya solo cuando la conversión tenga reglas que ninguna biblioteca ofrece — un esquema de aplanado personalizado, una unión específica del dominio, un requisito de streaming. Y si la conversión se ejecuta en un servidor, recuerda la diferencia de privacidad: un conversor de navegador mantiene el archivo en el equipo del usuario, mientras que un conversor de servidor ve los datos.

Way 5 output: a library call in JavaScript (verified)
const rows = require('./staff.json');
const cols = ['id', 'name', 'dept.team', 'dept.floor', 'skills', 'active'];
const get = (r, p) => p.split('.').reduce((o, k) => o?.[k], r);
const esc = v => { const s = String(v ?? '');
  return /[",\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s; };
console.log(cols.join(','));
for (const r of rows)
  console.log(cols.map(c => esc(c === 'skills' ? (get(r, c) || []).join('; ') : get(r, c))).join(','));

# id,name,dept.team,dept.floor,skills,active
# 1,Ana,Support,2,chat; phone,true
# 2,Ken,Sales,3,email,false
# 3,Lina,Support,2,,true

Cuando no hay ninguna forma buena

Una guía que solo dijera que sí estaría mintiendo por omisión, porque hay archivos en los que convertir a CSV es la jugada equivocada, y saberlo ahorra más tiempo que cualquier herramienta. El primer caso son los datos profundamente anidados o con forma de grafo: un hilo de comentarios donde los comentarios contienen respuestas que contienen respuestas, o registros que se referencian entre sí. Aplanar eso en columnas produce cientos de columnas dispersas o un resumen con pérdida, y la respuesta honesta es mantenerlo como JSON o consultarlo con jq en lugar de aplanarlo.

El segundo caso son los esquemas mixtos: un archivo donde un registro tiene claves que los demás no tienen, o la misma clave contiene una cadena en un registro y un objeto en otro. Un conversor maneja esto tomando la unión de todas las claves y dejando celdas vacías, lo cual es correcto pero a menudo inútil — la tabla resultante es mayormente huecos. Antes de convertir, pregúntate si los registros son realmente el mismo tipo de cosa; si no lo son, divide el archivo por tipo de registro primero, y luego convierte cada parte.

El tercer caso es la escala: un archivo demasiado grande para la herramienta en cuestión. Un conversor de navegador se atasca en algún punto de las decenas de megabytes, una importación en el editor se detiene, e incluso pandas se ralentiza. La solución no es un conversor mejor sino una forma diferente: divide el archivo, transmítelo con jq --stream, o sáltate el CSV por completo y mantén los datos como JSON Lines (un objeto JSON por línea), que se transmite de forma natural y sigue siendo consultable. Nuestra guía para convertir JSON grande a CSV en línea cubre la cuestión del tamaño en su totalidad.

¿Qué forma deberías elegir?

Elige según tu caso, no según la reputación de la herramienta. Un archivo, una vez, y quieres terminarlo: forma 1, el conversor en línea. El resultado tiene que terminar en una hoja de cálculo en la que seguirás trabajando: forma 2, Power Query. Ya escribes código y el archivo es incómodo o la conversión se repetirá: forma 3, Python o jq. Ya estás editando el archivo en VS Code: forma 4, el terminal integrado. La conversión tiene que ocurrir dentro del software que distribuyes: forma 5, una llamada a una biblioteca.

Dos desempates resuelven la mayoría de los casos restantes. Si la privacidad importa — el archivo contiene datos de clientes, credenciales, cualquier cosa que no enviarías por correo — prefiere una forma que mantenga los datos en tu equipo: un conversor de navegador, un script local, o tu editor. Si el archivo es enorme, prefiere una forma que transmita en streaming: jq --stream o un script de Python por bloques, no una pestaña del navegador. Todo lo demás es gusto y hábito, y cualquiera de las cinco formas produce el mismo CSV correcto para un archivo bien formado.

Lo que toda forma tiene que decidir

Elijas la forma que elijas, cuatro decisiones se esconden dentro de ella, y dos archivos convertidos con respuestas diferentes a ellas no son el mismo CSV. Aplanado: ¿los objetos anidados se convierten en columnas con puntos, o se quedan como texto JSON en una celda? Delimitador: coma, punto y coma, tabulación o barra vertical — ¿y tu hoja de cálculo espera el mismo? Fila de encabezado: ¿se incluyen los nombres de columna, y son los nombres que espera tu herramienta de destino? Codificación: UTF-8 puro, ¿y tu hoja de cálculo lo abre como UTF-8 o como otra cosa?

Estos no son temas avanzados; son las decisiones que determinan si el CSV se abre correctamente al primer intento o al quinto. Nuestra guía para crear CSV desde JSON recorre las siete decisiones que convierten datos brutos en un archivo funcional, con cada una probada contra el conversor real. Léela una vez, y cada conversión posterior será más rápida.

Guías relacionadas

Preguntas frecuentes

¿Hay una forma gratuita de convertir JSON a CSV?

Sí — las cinco formas de esta guía son gratuitas. Un conversor en línea es gratuito sin registro, Power Query de Excel viene incluido en Excel, Python y jq son gratuitos y de código abierto, VS Code es gratuito, y el enfoque de JavaScript usa solo la biblioteca estándar. Nunca necesitas pagar para convertir JSON a CSV.

¿Hay alguna forma de convertir JSON a CSV sin instalar nada?

Sí. Usa un conversor en línea gratuito: pega el JSON o sube el archivo en tu navegador y descarga el CSV. El conversor de este sitio se ejecuta por completo en tu navegador, así que no se instala nada y el archivo nunca sale de tu equipo. Si el archivo ya está abierto en una hoja de cálculo que tienes, Power Query tampoco requiere instalación.

¿Hay alguna forma de convertir JSON a CSV sin escribir código?

Sí — dos de ellas. Un conversor en línea no necesita código en absoluto: pegar, convertir, descargar. Power Query de Excel tampoco necesita código: importa el archivo JSON, expande las columnas anidadas haciendo clic, y carga el resultado como una tabla. El código solo se vuelve útil cuando la conversión tiene que repetirse o el archivo es incómodo.

¿Hay alguna forma de convertir JSON a CSV en Excel?

Sí, con Power Query: Datos, Obtener datos, Desde un archivo, Desde JSON. Expande cada columna anidada para aplanar los objetos en columnas con puntos, expande o extrae las columnas de lista según quieras una fila por elemento o una sola celda unida, y luego Cerrar y cargar. Google Sheets no tiene una importación nativa equivalente — pasa por un conversor en línea o usa un pequeño Apps Script en su lugar.

¿Hay alguna forma de convertir un archivo JSON grande a CSV?

Sí, pero no en una pestaña del navegador. Para archivos de decenas de megabytes en adelante, usa el modo streaming de jq (jq --stream), que procesa el archivo registro por registro en lugar de cargarlo todo, o un script de Python por bloques que lea y escriba en lotes. Si el archivo tiene cientos de megabytes, considera mantenerlo como JSON Lines (un objeto JSON por línea) en lugar de CSV.

¿Hay alguna forma de convertir JSON a CSV manteniendo intactos los datos anidados?

Sí — convierte con el aplanado desactivado. Los objetos anidados y las listas entonces se quedan como texto JSON dentro de celdas individuales, así que no se pierde nada, pero el resultado no es una tabla ordenable. Si necesitas ambas cosas — columnas reales y nada perdido — aplana las partes que analizas y conserva el resto como texto JSON, o explota la lista que necesites en una fila por elemento.

¿Hay alguna forma de convertir CSV de vuelta a JSON?

Sí, el viaje de vuelta está igual de bien cubierto. Nuestra guía para convertir CSV a JSON cubre tres métodos fiables: un conversor en línea, un fragmento de Python y pandas, y el honesto paso en dos fases por Excel o Google Sheets, ya que ninguna de las dos exporta JSON de forma nativa. Las mismas cuatro decisiones — aplanado, delimitador, encabezado, codificación — se aplican en sentido inverso.

Un archivo, un minuto, sin instalar nada

Pega el JSON o sube un archivo: los objetos anidados se aplanan a columnas con notación de punto, las listas se unen en celdas limpias y la descarga es UTF-8 puro. Gratis, sin registro, funciona por completo en tu navegador.

Abrir el conversor de JSON a CSV
Todas las guías