Convertir JSON a CSV

Funciona en tu dispositivo · Tu archivo nunca sale de tu dispositivo.

Suelta un archivo .json o pega el JSON directamente de la respuesta de una API y obtén un CSV que se abre en Excel, Google Sheets o cualquier pantalla de importación. Una lista de primer nivel da una fila por elemento; si no, se usa la lista de registros más larga del documento, así que {"results": [...], "count": 2} da una fila por resultado; un objeto sin ninguna lista se convierte en una fila.

Las reglas son fijas para que el resultado sea predecible: los objetos anidados pasan a columnas separadas por punto (direccion.ciudad), una lista de valores simples se une con punto y coma en una celda, y una lista de objetos dentro de un registro recibe columnas numeradas (items.0.nombre). La fila de cabecera es la unión de todas las claves encontradas, en el orden en que aparecen por primera vez, así que un registro al que le falte un campo simplemente deja la celda vacía.

El CSV se escribe según la RFC 4180 – los campos con comas, comillas o saltos de línea van entrecomillados como corresponde – en UTF-8 con una marca de orden de bytes (BOM) opcional para que Excel muestre bien cualquier escritura, los acentos, las eñes y los símbolos. Una celda que empieza por =, +, - o @ recibe un apóstrofo delante, para que la hoja de cálculo la muestre como texto en lugar de ejecutarla como fórmula. Ves las primeras 200 líneas antes de descargar, y nada sale de tu dispositivo.

Cómo Convertir JSON a CSV

  1. Suelta un archivo JSON o pega el JSON en el cuadro.
  2. Elige el separador de columnas de salida (coma por defecto) y si quieres añadir el BOM para Excel.
  3. Pulsa «Convertir a CSV» y revisa la vista previa de las primeras líneas.
  4. Descarga el .csv.

Formatos admitidos y límites

Entrada
JSON (.json) – un archivo o texto pegado, UTF-8
Salida
CSV, RFC 4180, UTF-8, saltos de línea CRLF, BOM opcional
Anidamiento
Objetos → columnas con punto; listas de valores → unidas con ;
Separador
Coma, punto y coma, tabulador o barra vertical
Dónde se ejecuta
En tu navegador – sin subir nada

No sirve para: Un único objeto muy anidado sin ninguna lista dentro – se convierte, pero como una fila muy ancha y no como una tabla.

Qué lista se convierte en las filas

Una lista de primer nivel son las filas. Si no la hay, la herramienta busca en el documento, hasta ocho niveles de profundidad, la lista de objetos más larga. Así, {"response": {"data": {"items": [...]}}} y {"results": [...], "count": 2, "next": null} dan las dos una fila por elemento, y la línea bajo el resultado nombra la lista usada, por ejemplo «filas tomadas de results». Los valores que hay junto a esa lista, como count y next, no forman parte de ningún registro y se dejan fuera.

De dos listas igual de largas, gana la que está menos anidada. Para usar una lista más corta, cópiala desde su [ hasta su ] y pega solo eso. Un documento sin ninguna lista de objetos se convierte en una fila, y los envoltorios de una sola clave se saltan, así que {"order": {"id": 7, "total": 12}} da las columnas id y total.

Cómo se escriben los valores en las celdas

El texto se copia tal cual, fechas incluidas, que se quedan en la forma en que las tenga el JSON, como 2024-01-05T10:00:00Z. true y false se escriben como palabras. null, una lista vacía y un objeto vacío se convierten todos en una celda vacía, así que en el CSV se ven igual que un campo que faltaba.

Un número se escribe exactamente como lo tiene el JSON: 1.0 sigue siendo 1.0, 1e21 sigue siendo 1e21, y un identificador como 12345678901234567890 conserva todas sus cifras aunque no lleve comillas. Un lector de JSON corriente convertiría ese identificador en 12345678901234567000.

Listas dentro de listas, y claves que ya llevan puntos

Una lista de listas se abre un nivel: "m": [[1, 2], [3]] da una columna m.0 con 1;2 y una columna m.1 con 3. Una lista que mezcla objetos y valores simples numera cada elemento, así que "x": [{"z": 1}, 2] da x.0.z y x.1.

Los nombres de columna se forman uniendo claves con puntos, así que una clave que ya contiene un punto puede coincidir con una anidada: {"a.b": 1, "a": {"b": 2}} daría a.b dos veces. La segunda recibe un sufijo, de modo que las columnas son a.b y a.b_2 y se conservan los dos valores.

Qué separador elegir, y las celdas que empiezan por =

La coma es lo habitual. El punto y coma va bien con una hoja de cálculo configurada en un idioma que escribe los decimales con coma, como el español, donde un archivo separado por comas a menudo se abre en una sola columna. El tabulador y la barra vertical son para sistemas que los piden. Sea cual sea el separador, el archivo lleva la extensión .csv.

Una celda que empieza por =, +, - o @ es una fórmula para una hoja de cálculo, que la ejecutaría al abrir el archivo. A esa celda se le pone delante un apóstrofo, la marca que usan las propias hojas de cálculo para decir «esto es texto», así que =1+1 se escribe como '=1+1. Los números normales, como -5 o +3.5, se dejan como están.

Preguntas frecuentes

¿Mis archivos se suben a un servidor?
No. La conversión ocurre por completo en tu navegador, con la potencia de tu propio dispositivo. El archivo no sale de tu ordenador ni de tu móvil. Y una vez que has usado una herramienta, sigue funcionando sin conexión (el video, el reconocimiento de texto y la eliminación de fondo descargan su motor desde esta web la primera vez).
¿Qué pasa con los objetos y las listas anidadas?
Un objeto anidado se aplana en columnas con punto: {"direccion":{"ciudad":"Madrid"}} se convierte en una columna llamada direccion.ciudad. Una lista de valores simples ("tags": ["a","b"]) se escribe como a;b en una celda. Una lista de objetos dentro de un registro recibe columnas numeradas como items.0.nombre, items.1.nombre.
Mi JSON es un objeto, no una lista – ¿qué obtengo?
La lista de registros más larga que haya en él se convierte en las filas – {"results": [...], "count": 2, "next": null} da una fila por resultado – y la línea del resultado nombra la lista usada. Los valores que hay junto a esa lista no forman parte de ningún registro y se dejan fuera. Un objeto sin ninguna lista se escribe como una sola fila con una columna por clave.
¿Por qué Excel muestra caracteres raros y cómo lo arreglo?
Excel adivina la codificación si el archivo no empieza con una marca de orden de bytes. El interruptor «Añadir un BOM para Excel» está activado por defecto y añade esos tres bytes; desactívalo para herramientas que exigen UTF-8 puro.

Herramientas relacionadas

Más en Hojas de cálculo y datos

Esta página en otros idiomas: English · العربية · Deutsch · Français · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা