Convertidor de JSON a CSV

Pega un array JSON de objetos a la izquierda, obtén un CSV correctamente entrecomillado a la derecha. Encabezado a partir de las claves. Sin subida.

  1. Pega un array JSON de objetos en el área de texto izquierda.
  2. Haz clic en "Convertir a CSV". La fila de encabezado se construye con la unión de las claves de los objetos.
  3. Copia el resultado, o descárgalo como data.csv.
  4. Para valores anidados, el campo se convierte a JSON-string — aplánalos antes si quieres columnas planas.
¿Qué hace?

Convierte un array JSON de objetos en CSV RFC 4180. La fila de encabezado es la unión de todas las claves de los objetos. Los valores se entrecomillan cuando contienen comas, comillas o saltos de línea. Números y booleanos se emiten sin comillas; null y undefined se convierten en campos vacíos. Los valores anidados (objetos, arrays) se convierten a JSON-string en un único campo entrecomillado — CSV no puede representar jerarquía nativamente.

Ejemplo

Entrada JSON:

[
  {"name":"Ada","age":36,"role":"engineer"},
  {"name":"Grace","age":40,"role":"scientist"}
]

Salida CSV:

name,age,role
Ada,36,engineer
Grace,40,scientist

Errores comunes de JSON a CSV

CSV es un formato plano. La mayoría de salidas "raras" provienen de formas JSON que no tienen una representación plana.

  • Nivel superior no es un array. Un objeto JSON `{"a":1,"b":2}` no puede convertirse directamente a CSV — envuélvelo en un array: `[{"a":1,"b":2}]`. El CSV tendrá una fila de encabezado y una fila de datos.
  • Claves heterogéneas entre filas. Si el primer objeto tiene `{a,b}` y el segundo `{a,c}`, el encabezado es `a,b,c` (la unión). Las filas que carecen de una clave emiten un campo vacío. Pre-procesa si quieres un esquema más estricto.
  • Valores anidados aplanados silenciosamente. Un campo como `{"address":{"city":"NY"}}` se convierte en una sola columna CSV cuyo valor es la cadena JSON `{"city":"NY"}`. Para obtener columnas separadas `address.city`, aplana en JavaScript primero: `{address_city: row.address.city}`.
  • Saltos de línea embebidos en valores. Una cadena multilínea en un valor JSON se vuelve un campo CSV entrecomillado con `\n` literales dentro de las comillas. La mayoría de hojas de cálculo lo manejan; algunas herramientas heredadas no.
  • Caracteres especiales en encabezados. Las claves JSON con comas, comillas o saltos de línea funcionan pero producen una fila de encabezado que algunos consumidores CSV parsean mal. Renombra las claves a alfanuméricos + guion bajo antes de convertir si necesitas máxima compatibilidad.
  • Coma final en JSON. `[{"a":1},]` es JSON inválido (coma sobrante tras el último elemento). El parser lo rechaza antes del paso a CSV. La mayoría de formateadores JSON la quitan — pásalo por `/json-prettifier` si hace falta.
Preguntas frecuentes

¿Cómo obtengo salida separada por tabuladores (TSV)?

Esta página emite CSV separado por comas. Para TSV, sustituye `,` por `\t` en el resultado, o ejecuta PapaParse con `delimiter: "\t"` en línea de comandos — misma biblioteca.

¿Se conserva el orden de las claves en la fila de encabezado?

Sí — el encabezado usa el orden en el que aparecen las claves por primera vez en todos los objetos. Si quieres orden alfabético, ordena las claves en tu JSON antes de pegar.

¿Cómo se manejan las fechas?

JSON no tiene tipo Date nativo — las fechas suelen estar ya serializadas como cadenas ISO 8601. Pasan sin cambios. Si tu JSON proviene de JSON.stringify de un Date, ya fue convertido a cadena ISO en ese momento.

¿Puedo hacer round-trip JSON → CSV → JSON?

Para datos array de objetos planos, sí. Las cadenas siguen siendo cadenas, los números siguen siendo números (con tipado dinámico de PapaParse al importar). Los valores anidados pierden estructura en el lado CSV y vuelven como campos JSON-string, no como objetos anidados otra vez.

¿Mi JSON se sube?

No. Todo se ejecuta en tu navegador — tu JSON se parsea y convierte por JavaScript en esta página y nunca se envía a un servidor. Verifícalo en las herramientas de desarrollador.

¿Qué tan grande puede ser el JSON?

Hasta unos 50 MB antes de que el área de texto del navegador se sienta lenta. La conversión escala linealmente con el tamaño de entrada; el cuello de botella es el renderizado. Para archivos más grandes, ejecuta PapaParse en línea de comandos.