Json To Csv LogoJson To Csv

¿Cómo convertir JSON a CSV en VS Code? 4 formas, del clic a una sola tecla (Guía 2026)

VS Code no tiene ningún comando integrado de JSON a CSV, pero te da cuatro rutas honestas: una extensión de un clic, la terminal integrada con jq o Python, una tarea guardada en tasks.json o un conversor online cuando quieres cero configuración. Aquí está cada una, probada con datos anidados reales.

Actualizado: 2026-10-1510 min de lectura

Primero, el planteamiento honesto: VS Code es un editor, no un conversor

Si has buscado en los menús, no te has perdido nada. VS Code no tiene ningún comando Convertir a CSV, ningún menú Exportar para JSON ni ninguna forma integrada de convertir un archivo .json en un archivo .csv. No es un descuido: VS Code es un editor de código, y la conversión de formatos es el tipo de trabajo que delega en extensiones, la terminal y las tareas. Una vez que lo aceptas, la pregunta deja de ser “¿dónde está el botón?” y pasa a ser “¿cuál de las cuatro rutas encaja con este archivo?”

Las cuatro rutas, en resumen: una extensión para la conversión con un clic dentro del editor; la terminal integrada para el control total con jq o Python; una tarea en tasks.json para las conversiones que repites cada semana; y un conversor online para archivos sueltos donde quieres cero configuración. Cada una es de verdad la mejor en una cosa, y cada una tiene un modo de fallo que las demás evitan. Esta guía cubre las cuatro, con los comandos exactos y las salidas exactas que produjeron en un archivo de prueba anidado real: un documento JSON de tres pedidos con objetos de cliente anidados, listas de artículos y un total nulo.

Ruta 1: la extensión JSON2CSV (la más rápida para un solo archivo)

Para un solo archivo que quieres convertir ahora mismo, una extensión es la ruta con menos esfuerzo. La que hay que instalar es JSON2CSV, de khaeransori, en el Visual Studio Code Marketplace. Su README documenta el flujo sin rodeos: instálala, abre un archivo JSON, abre la Paleta de comandos con Ctrl+Shift+P (Cmd+Shift+P en macOS), escribe Convert JSON to CSV y el CSV convertido se abre en una pestaña nueva del editor, donde lo guardas con Ctrl+S. También convierte en la otra dirección, de CSV a JSON, desde la misma paleta.

La instalación lleva menos de un minuto: abre la vista Extensiones con Ctrl+Shift+X, busca json2csv y haz clic en Instalar en la entrada publicada por khaeransori. Dos hábitos mantienen seguras las instalaciones de extensiones en general, y se aplican aquí tanto como en cualquier parte: comprueba que el nombre del publicador coincide antes de hacer clic en Instalar (existen extensiones imitadoras con nombres parecidos para herramientas populares), y echa un vistazo al recuento de descargas y a la fecha de la última actualización. Una extensión ejecuta código en tu equipo con acceso a tus archivos, así que un momento de comprobación del publicador vale más que cualquier lista de funciones.

Existen dos alternativas si JSON2CSV no te encaja. DataMorph (listada como Data Format Converter) convierte entre CSV, JSON y Excel desde el menú contextual del clic derecho o desde la Paleta de comandos, y anuncia conversión por lotes de varios archivos a la vez además de un aplanado inteligente de JSON anidado. Algae Data es una opción más ligera: abre un archivo JSON, ejecuta Algae: JSON to CSV desde la Paleta de comandos y el resultado se abre en una ventana nueva del editor. Las tres son extensiones reales del Marketplace con fichas públicas; elige la que cuya lista de funciones coincida con tus archivos, no la que tenga la descripción más ruidosa.

La limitación honesta de la ruta de la extensión: estás confiando tus datos a una herramienta de terceros, y sus decisiones de aplanado son suyas. Si tu JSON está muy anidado o el orden de tus columnas importa, las rutas de terminal de abajo te dan control explícito sobre ambas cosas, y por eso los desarrolladores que convierten JSON cada semana suelen acabar en la Ruta 2 o en la Ruta 3.

Ruta 2: la terminal integrada: jq para datos planos, Python para datos anidados

La terminal integrada es la superpotencia de VS Code para este trabajo: pulsa Ctrl+` (la tecla de acento grave) y tienes un shell completo dentro del editor, en tu carpeta de proyecto, con tu archivo abierto al lado. Sin cambiar de ventana, sin subidas, y cada comando de abajo se puede volver a ejecutar. Dos herramientas cubren casi todos los archivos: jq para conversiones planas rápidas y Python para cualquier cosa anidada.

Empieza con jq, el procesador JSON de línea de comandos. Si tu JSON es una matriz de objetos planos, sin objetos anidados ni matrices dentro de las filas, un solo comando hace toda la conversión. Recoge cada clave de todas las filas como encabezado y luego emite cada fila como CSV:

jq: matriz JSON plana a CSV (verificado)
jq -r '(map(keys) | add | unique) as $cols | $cols, (.[] | [.[$cols[]]] | @csv)' flat.json > flat.csv

En un archivo de prueba plano de dos pedidos (id, nombre, total), ese comando produjo exactamente esto: una fila de encabezado id,name,total seguida de 1,"Ana",24.5 y 2,"Bo",9.0. Limpio, correcto e instantáneo. Pero prueba el mismo comando con datos anidados y jq te detiene con honestidad: en nuestro archivo de prueba anidado de tres pedidos, falló con “object is not valid in a csv row”, porque un objeto anidado como customer no tiene ninguna celda CSV única donde vivir. Ese error es jq diciéndote la verdad: las herramientas planas necesitan filas planas.

Ruta 2: la terminal integrada: jq para datos planos, Python para datos anidados (continuación)

Para JSON anidado, jq sigue funcionando si nombras las columnas de forma explícita. Esta receta extrae los campos que quieres por ruta, une la lista de artículos en una sola celda con "; " y escribe el CSV:

jq: JSON anidado con columnas explícitas (verificado)
jq -r '["id","name","city","items","total"], (.[] | [.id, .customer.name, .customer.city, (.items | join("; ")), .total]) | @csv' orders.json > orders.csv

Al ejecutarla contra el archivo de prueba anidado, produjo un encabezado "id","name","city","items","total" y tres filas, entre ellas 1,"Ana","Oslo","book; pen",24.5 y 3,"Cy","Trondheim","", para el pedido con una lista de artículos vacía y un total nulo. Ten en cuenta dos comportamientos de jq que conviene conocer: @csv entrecomilla todas las cadenas (correcto, aunque ruidoso), y null se convierte en un campo vacío solo cuando cae en un contexto de cadena: la celda de artículos vacía de la tercera fila vino de join sobre una lista vacía, mientras que el total nulo se imprimió como un campo vacío al final de la fila. Las columnas explícitas significan control explícito: tú decides el orden de las columnas, las rutas de anidado y en qué se convierte cada lista.

Ruta 2: la terminal integrada: jq para datos planos, Python para datos anidados (continuación)

Cuando nombrar cada columna a mano se vuelve tedioso, Python es la herramienta mejor. Guarda este pequeño script como convert.py en tu proyecto: aplana los objetos anidados en columnas con notación de puntos (customer.name), une las listas planas con "; ", convierte null en una celda vacía y escribe un CSV correcto con el módulo csv estándar encargándose del entrecomillado por ti:

convert.py: script de JSON a CSV con aplanado (verificado)
import json, csv, sys

def flatten(obj, prefix=""):
    out = {}
    if isinstance(obj, dict):
        for k, v in obj.items():
            key = f"{prefix}.{k}" if prefix else k
            out.update(flatten(v, key))
    elif isinstance(obj, list):
        out[prefix] = "; ".join(str(x) for x in obj if not isinstance(x, (dict, list))) if obj else ""
        for i, v in enumerate(obj):
            if isinstance(v, (dict, list)):
                out.update(flatten(v, f"{prefix}[{i}]"))
    else:
        out[prefix] = "" if obj is None else obj
    return out

rows = json.load(open(sys.argv[1]))
if isinstance(rows, dict):
    rows = [rows]
flat = [flatten(r) for r in rows]
cols = sorted({k for r in flat for k in r})
with open(sys.argv[2], "w", newline="", encoding="utf-8") as f:
    w = csv.DictWriter(f, fieldnames=cols)
    w.writeheader()
    w.writerows(flat)
print(f"wrote {sys.argv[2]}: {len(flat)} rows, {len(cols)} columns")

Ejecútalo desde la terminal integrada con python3 convert.py orders.json orders.csv. En el mismo archivo de prueba anidado imprimió “wrote orders.csv: 3 rows, 5 columns” y produjo customer.city,customer.name,id,items,total como encabezado, con las filas Oslo,Ana,1,book; pen,24.5 / Bergen,Bo,2,mug,9.0 / Trondheim,Cy,3,, : el total nulo y la lista de artículos vacía quedaron ambos como celdas vacías, exactamente como prometen las reglas de aplanado. El script maneja las dos formas que la gente se encuentra en la práctica: una matriz de nivel superior (el caso normal) y un único objeto de nivel superior (envuelto en una tabla de una fila). Tanto las dos recetas de jq como este script se ejecutaron en la máquina de compilación antes de publicar, y las salidas de arriba son sus salidas reales, no ilustraciones.

Ruta 3: guárdala como tarea: una sola tecla, cada vez

Si conviertes archivos JSON más de una vez al mes, deja de volver a escribir comandos y guarda la conversión como una tarea de VS Code. Una tarea es un comando con nombre en .vscode/tasks.json, ejecutable desde Terminal → Ejecutar tarea o con el atajo de teclado Ctrl+Shift+B. Convierte la ruta de Python de arriba en una operación de una sola tecla sobre el archivo que tengas abierto.

Crea .vscode/tasks.json en tu proyecto con este contenido (el archivo se comprobó que se analiza como JSON válido antes de publicar):

.vscode/tasks.json: convertir el archivo abierto (verificado: se analiza como JSON válido)
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "JSON to CSV: convert current file",
      "type": "shell",
      "command": "python3 ${workspaceFolder}/convert.py ${file} ${fileDirname}/${fileBasenameNoExtension}.csv",
      "problemMatcher": []
    }
  ]
}

Cómo funciona: ${file} es el archivo abierto en tu editor activo, ${fileDirname} es su carpeta y ${fileBasenameNoExtension} es su nombre sin .json: así que con orders.json abierto, la tarea ejecuta python3 convert.py sobre él y escribe orders.csv junto a él. Abre cualquier archivo JSON, pulsa Ctrl+Shift+B, elige la tarea y el CSV aparece junto al archivo fuente. El mismo patrón sirve para las recetas de jq: sustituye el comando por la línea de jq y ${file} como entrada. Una precaución: las tareas ejecutan comandos de shell con tus permisos de usuario, así que solo añadas tareas de fuentes en las que confíes: la misma regla que para las extensiones, aplicada a la configuración.

La ruta de la tarea es también donde el script de Python se gana su sitio frente a jq: un script más una tarea manejan archivos planos, archivos anidados, objetos únicos y matrices por igual, sin editar el comando para cada archivo. Si conviertes exportaciones de la misma API cada semana, esta es la ruta que compensa.

Ruta 4: cuándo saltarse VS Code por completo y usar un conversor online

Hay tres situaciones en las que salir del editor es lo correcto. Primera, un archivo suelto en un equipo donde no puedes instalar extensiones ni tienes jq o Python a mano: un portátil prestado, un equipo de trabajo bloqueado, un Chromebook. Segunda, un JSON cuyo anidado es lo bastante incómodo como para que escribir rutas jq explícitas se sienta como trabajo: un conversor online con un interruptor de aplanado convierte todo el árbol en columnas con un clic, y puedes ver la vista previa antes de descargar. Tercera, compartir: si el CSV es para un colega que no usa VS Code, convertir en el navegador y enviarle el archivo terminado es más sencillo que explicarle tu cadena de herramientas.

La ruta online en este sitio se ejecuta por completo en tu navegador: pega JSON o sube el archivo, la conversión ocurre en el lado del cliente sin ninguna subida a un servidor, los datos anidados se aplanan a columnas con notación de puntos y la descarga es UTF-8 plano. Para un usuario de VS Code la comparación honesta es: el conversor online cambia la repetibilidad de una tarea por cero configuración y una vista previa instantánea. Usa las rutas del editor cuando la conversión se repite; usa la ruta del navegador cuando no se repite.

Revisar el resultado dentro de VS Code (y por qué el texto crudo es la verdad)

Tomes la ruta que tomes, revisa el CSV en VS Code antes de fiarte de él. VS Code te muestra el archivo crudo: las comas, comillas y saltos de línea reales, mientras que una hoja de cálculo te muestra su interpretación de ellos. Si ambos discrepan, el texto crudo es la verdad y la hoja de cálculo está adivinando. Dos extensiones facilitan la revisión: Edit CSV abre un CSV como una tabla editable estilo hoja de cálculo dentro del editor, y Rainbow CSV colorea cada columna con un color distinto para que las filas desalineadas salten a la vista.

El informe más común de “mi CSV está roto” es un archivo que se abre en Excel como una sola columna larga. Nueve de cada diez veces el archivo está bien: Excel adivinó mal el delimitador (a menudo un archivo de punto y coma abierto como si fuera de comas) o la codificación equivocada. Abre primero el archivo en VS Code: si las comas y las comillas se ven bien en el texto crudo, el archivo está bien, y la corrección está en el lado de la importación (Excel: Datos → Desde texto/CSV, elige el delimitador y UTF-8 65001). La barra de estado en la parte inferior de VS Code también muestra la codificación del archivo; si un archivo se ve destrozado, usa Archivo → Guardar con codificación → UTF-8 para normalizarlo, y Guardar con codificación → UTF-8 con BOM solo si una herramienta concreta de Windows exige un BOM.

Solución de problemas: los cuatro errores que los usuarios de VS Code se encuentran de verdad

JSON no válido, marcado antes de convertir. Si el archivo tiene ondulaciones rojas o el panel Problemas enumera errores, corrígelos primero: ningún conversor acepta JSON mal formado. Dos trampas específicas de VS Code: los archivos estilo configuración permiten comentarios y comas finales (eso es JSONC, no JSON), y una coma final extraviada tras el último elemento es el error de sintaxis más común. Elimina comentarios y comas finales antes de convertir; el propio servicio de lenguaje JSON de VS Code suele señalar la línea exacta.

Un único objeto en lugar de una matriz. Las API a menudo devuelven {"data": [...], "total": 2} o un {...} solitario en lugar de una matriz simple. El script de Python de arriba maneja un objeto solitario envolviéndolo en una fila, y para un objeto envoltorio quieres las filas que hay dentro: extrae primero la matriz (en jq, .data | ...; en Python, rows = json.load(...)["data"]), o el conversor te dará una fila con toda la matriz convertida en texto dentro de una celda.

Datos anidados que “desaparecen”. El aplanado siempre toma decisiones: las listas de objetos no tienen representación en una sola celda, y el script de Python de arriba une solo listas de valores planos, y recurre a las listas de objetos con claves indexadas (items[0].name). Si tus listas contienen objetos y la salida se ve mal, esa es la regla de aplanado mostrándose, no una pérdida de datos: decide por columna si quieres la lista unida, expandida en filas o eliminada, y dilo en el script en lugar de aceptar un valor por defecto en silencio.

Archivos enormes. Una extensión que convierte un archivo JSON de 200 MB dentro del editor puede colgar la interfaz; las rutas de terminal transmiten mejor, y jq en particular maneja archivos grandes sin cargar una vista previa. Si VS Code se siente lento, esa es la señal de usar la terminal: jq o Python en la línea de comandos, con el editor solo mostrando el resultado.

¿Qué ruta deberías elegir?

Un archivo, ahora mismo, sin configuración: la extensión JSON2CSV: instalar, Paleta de comandos, guardar la pestaña nueva. Archivos que conviertes cada semana: el script de Python más una tarea en tasks.json: una sola tecla, el mismo resultado cada vez. Un archivo plano rápido y te gusta la terminal: el one-liner de jq. Un archivo suelto en un equipo bloqueado, o un anidado incómodo que quieres previsualizar antes de comprometerte: el conversor online. Ninguna de estas es “la” forma de VS Code, porque VS Code deliberadamente no tiene ninguna forma integrada única: el editor te da las piezas, y la combinación correcta es la que coincide con la frecuencia con la que conviertes y con lo anidados que estén tus datos.

Abrir el conversor gratuito de JSON a CSV

Guías relacionadas

Preguntas frecuentes

¿Cómo convierto JSON a CSV en VS Code?

VS Code no tiene conversor integrado, así que añade una de cuatro rutas: instala la extensión JSON2CSV y ejecuta Convert JSON to CSV desde la Paleta de comandos; usa la terminal integrada con jq (datos planos) o un script de Python (datos anidados); guarda la conversión como una tarea en tasks.json para repeticiones de una sola tecla; o pega el JSON en un conversor online gratuito para un archivo suelto sin configuración.

¿Cuál es la mejor extensión de VS Code para pasar de JSON a CSV?

JSON2CSV, de khaeransori, es la más directa: instálala desde la vista Extensiones, abre tu archivo JSON, ejecuta Convert JSON to CSV desde la Paleta de comandos y el CSV se abre en una pestaña nueva. DataMorph (Data Format Converter) añade conversión a Excel y procesamiento por lotes; Algae Data es una alternativa más ligera. Verifica siempre el nombre del publicador antes de instalar cualquier extensión.

¿Puedo convertir JSON a CSV en VS Code sin una extensión?

Sí: usa la terminal integrada (Ctrl+`). Para matrices JSON planas: jq -r '(map(keys) | add | unique) as $cols | $cols, (.[] | [.[$cols[]]] | @csv)' file.json > file.csv. Para JSON anidado, usa jq con rutas de columna explícitas o un pequeño script de Python que aplana los objetos anidados en columnas con notación de puntos. Ambas rutas se probaron con datos reales para esta guía.

¿Por qué jq falla con “object is not valid in a csv row”?

Porque una fila contiene un objeto o una matriz anidados, y las filas CSV solo pueden contener valores planos. La receta genérica de jq con @csv solo funciona con filas planas. Corrígela nombrando las columnas de forma explícita (jq -r '["id","name",...], (.[] | [.id, .customer.name, ...]) | @csv') o aplanando primero con un script de Python que convierte los objetos anidados en columnas con notación de puntos.

¿Cómo automatizo la conversión de JSON a CSV en VS Code?

Guarda una tarea en .vscode/tasks.json que ejecute tu comando de conversión sobre el archivo abierto, por ejemplo python3 ${workspaceFolder}/convert.py ${file} ${fileDirname}/${fileBasenameNoExtension}.csv, y luego pulsa Ctrl+Shift+B (Terminal → Ejecutar tarea) con cualquier archivo JSON abierto. El CSV se escribe junto al archivo fuente cada vez, sin volver a escribir nada.

¿Por qué mi CSV de VS Code se abre como una sola columna en Excel?

Normalmente el archivo está bien y Excel adivinó mal el delimitador o la codificación. Comprueba primero el texto crudo en VS Code: si las comas y las comillas se ven bien allí, el archivo está bien. Vuelve a importar en Excel con Datos → Desde texto/CSV, elige el delimitador correcto y la codificación 65001 (UTF-8), en lugar de hacer doble clic en el archivo.

¿Puede VS Code convertir JSONC o JSON con comentarios a CSV?

No directamente: los comentarios y las comas finales son JSONC, no JSON, y ningún conversor los acepta. Elimina primero los comentarios y las comas finales (el panel Problemas de VS Code marca las líneas exactas) y luego convierte el JSON limpio. Lo mismo se aplica a los archivos de configuración y a los archivos .code-workspace, que son JSONC por diseño.

¿Un archivo suelto? Conviértelo en el navegador, sin extensión

Pega JSON o sube un archivo: los datos anidados se aplanan en columnas limpias, los delimitadores y el entrecomillado son automáticos, y la descarga es UTF-8 plano. Gratis, sin registro, se ejecuta por completo en tu navegador.

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