Saltar al contenido principal

Convertir JSON a CSV

JSON a CSV convierte un array de registros en una cuadrícula lista para hoja de cálculo, en tu navegador. Los objetos y arrays anidados se convierten en rutas de columna explícitas y reversibles en lugar de aplanarse hasta desaparecer o descartarse, y el conjunto de columnas es la unión de todos los registros, de modo que los campos que solo aparecen en filas posteriores sobreviven.

Solo local
JSON
0 B1 líneaLín. 1, Col. 1
CSVsolo lectura
0 B1 línea

¿Cómo funciona Convertir JSON a CSV?

Lo difícil de esta conversión no es la sintaxis, sino el choque de formas. CSV es un rectángulo: un conjunto fijo de columnas, una fila por registro, un escalar por celda. JSON es un árbol. Todo conversor tiene que decidir qué pasa cuando un registro contiene {"customer":{"name":"Ada"}}, y la mayoría decide en silencio — descartando el objeto anidado, pegando [object Object] en la celda o serializando todo el subárbol de vuelta a JSON dentro de un único campo.

La decisión aquí es una codificación de rutas explícita. customer.name para un miembro de objeto y tags[0] para un índice de array. Las dos notaciones son deliberadamente distintas para que el mapeo sea reversible: solo con puntos, a.0 no puede decir si a es un array o un objeto con una clave llamada “0”, y una ida y vuelta por CSV tendría que adivinar. Pega el resultado en CSV a JSON y obtienes el documento con el que empezaste.

La segunda decisión es el conjunto de columnas. La implementación obvia lee las claves del primer registro y las usa como cabecera — y pierde en silencio cada campo que solo aparece más adelante. Las exportaciones reales son heterogéneas: una nota opcional en un pedido de cada cincuenta, un descuento que solo se aplica a veces. El conjunto de columnas de aquí es la unión de todos los registros, en orden de primera aparición, así que no se descarta nada y el orden se sigue leyendo de forma natural.

Los arrays tienen una opción, porque no hay respuesta correcta. «Explotar» da a cada elemento su propia columna y la ida y vuelta es exacta. «Unir» los pone en una sola celda, separados por un delimitador, que es lo que suele querer quien abre esto en una hoja de cálculo — y es con pérdida, así que solo se aplica a arrays de escalares; un array de objetos siempre recibe «Explotar», porque unirlo lo destruiría.

El entrecomillado sigue RFC 4180: un campo se entrecomilla cuando contiene el delimitador, una comilla doble, un salto de línea, o espacios en blanco al principio o al final que la hoja de cálculo eliminaría. Las comillas dentro de un campo entrecomillado se duplican. Todo lo demás se emite sin comillas, porque un archivo donde cada celda está entrecomillada es más difícil de leer y no más correcto.

JSON de entrada

[
  { "id": 1, "user": { "name": "Ada" }, "tags": ["a","b"] },
  { "id": 2, "user": { "name": "Grace" }, "tags": ["c"], "vip": true }
]

CSV de salida

id,user.name,tags[0],tags[1],vip
1,Ada,a,b,
2,Grace,c,,true

JSON de entrada → CSV de salida

JSON de entrada

[
  { "id": 1, "customer": { "name": "Ada", "city": "London" }, "total": 42.5 },
  { "id": 2, "customer": { "name": "Grace", "city": "New York" }, "total": 7 }
]

CSV de salida

id,customer.name,customer.city,total
1,Ada,London,42.5
2,Grace,New York,7

¿Qué opciones y casos límite admite Convertir JSON a CSV?

Referencia técnica y opciones
ParámetroTipoValor predeterminadoComportamiento y casos límite
Delimitador, ; tab |,El punto y coma es el estándar de facto en regiones donde la coma es el separador decimal, y es lo que espera Excel. La tabulación evita casi por completo el uso de comillas, ya que las tabulaciones son raras dentro de los datos.
Modo de matrizexplode | joinexplodeExplode da tags[0], tags[1] y hace un viaje de ida y vuelta exacto. Join colapsa los escalares en una sola celda y es con pérdida de datos. Una matriz de objetos siempre se explode sin importar, porque unirla perdería la estructura por completo.
Comillar todobooleanofalsePor defecto, un campo se comilla solo cuando RFC 4180 lo requiere. Algunos importadores estrictos prefieren que todo esté comillado; el resultado es válido de cualquier manera.
Fila de encabezadobooleanotrueEmite las rutas de columnas aplanadas como la primera fila. Sin ella, los significados de las columnas son solo posicionales, y un viaje de vuelta a JSON no puede reconstruir la anidación.
Conjunto de columnasunióntodos los registrosCada columna que aparece en cualquier registro, en orden de primera aparición. Leer el encabezado del primer registro es la forma más común en que un convertidor silenciosamente elimina datos.
nullvalorcelda vacíaSe escribe como un campo vacío en lugar del texto "null", porque una hoja de cálculo trata la palabra literal como una cadena. Esto significa que null y ausente son indistinguibles en la salida — inherente a CSV, no a esta herramienta.
Forma de nivel superiorarray | objectarrayUna matriz de registros es la entrada esperada. Un solo objeto se convierte en una fila. Un objeto con exactamente un miembro de matriz — el sobre {"data":[…]} que la mayoría de las APIs devuelven— usa esa matriz, y lo indica.
Tamaño de entradabytes8 MBLa conversión se ejecuta en el hilo principal, por encima de este límite se rechaza en lugar de intentarse. No se sube nada a ningún tamaño.

Preguntas frecuentes

¿Qué pasa con los objetos anidados?

Se convierten en nombres de columna con puntos: {"customer":{"name":"Ada"}} produce una columna llamada customer.name. Los arrays usan notación con corchetes — tags[0], tags[1] — así que ambos son distinguibles y la conversión es reversible. Esa es la diferencia con la mayoría de los conversores, que descartan el objeto anidado, escriben [object Object] en la celda o meten un blob JSON en un solo campo.

Mis registros tienen campos distintos. ¿Se descartará alguno?

No. El conjunto de columnas es la unión de los campos de todos los registros, en el orden en que aparecen por primera vez, así que una nota que aparece en un solo pedido de cada cincuenta sigue teniendo su propia columna, con celdas vacías en el resto. Los conversores que leen la cabecera solo del primer registro pierden esos campos en silencio, y ese es el fallo que más conviene evitar aquí.

¿Puedo convertir el CSV de vuelta al JSON original?

Sí, con el modo «Explotar» y la fila de cabecera activada. Pega el resultado en CSV a JSON y el anidamiento se reconstruye a partir de las rutas de columna. Dos limitaciones son inherentes a CSV y no a la herramienta: una celda no puede distinguir la cadena "22201" del número 22201, ni puede distinguir una cadena vacía de un campo ausente.

¿Por qué mi columna de números sale entrecomillada en Excel, o se muestra como fecha?

Es la heurística de importación de Excel, no el archivo. Reinterpreta agresivamente todo lo que se parece a una fecha, y quita los ceros a la izquierda de todo lo que se parece a un número, lo que destroza códigos de producto y códigos postales. Usa «Datos → Desde texto/CSV» en vez de hacer doble clic en el archivo, y marca esas columnas como Texto en el diálogo de importación.

¿Se sube mi JSON a algún sitio?

No. La conversión se ejecuta en tu navegador. Abre DevTools, ve al panel Network y pega un documento — ninguna petición lo transporta. Eso importa aquí más de lo que parece: el JSON que la gente convierte a CSV suele ser una exportación de registros reales, que es justo el tipo de datos que no debería pasar por un servidor desconocido de camino a una hoja de cálculo.

¿Qué delimitador debería elegir?

Coma, salvo que tengas un motivo. Punto y coma si el archivo va a alguien en una configuración regional donde la coma es el separador decimal, porque es lo que su Excel espera — un archivo delimitado por comas se abre allí como una sola columna. Tabulador si los datos contienen muchas comas y comillas, ya que los tabuladores casi nunca aparecen dentro de los campos y el archivo sigue siendo legible.

¿Qué más puede hacer Convertir JSON a CSV?