Saltar al contenido principal
Tooletto

JSON a CSV

Convierte un array JSON a CSV para Excel, Google Sheets o una importación de base de datos. Los objetos anidados se aplanan en columnas con puntos, y los registros con formas distintas se combinan en un solo conjunto de columnas.

  • Los archivos nunca salen de tu dispositivo
  • Gratis, sin registro
  • Sin marcas de agua
  • Funciona sin conexión una vez cargado
Loading tool…

Cómo json a csv

  1. 1

    Pega tu JSON

    Un array de objetos funciona mejor — la herramienta te dirá si necesita una forma distinta.

  2. 2

    Elige tus opciones

    Elige un delimitador, y si aplanar objetos anidados en columnas con puntos.

  3. 3

    Descarga el CSV

    Guárdalo y ábrelo directamente en Excel o Google Sheets.

Por qué JSON y CSV son formas de datos fundamentalmente distintas

JSON está construido para representar datos arbitrariamente anidados en forma de árbol — objetos dentro de objetos, arrays dentro de objetos, valores de tipos genuinamente distintos uno junto a otro — mientras que CSV solo puede representar una tabla plana y uniforme: filas y columnas, cada fila con el mismo conjunto de columnas, cada celda un solo valor plano. Convertir de la primera forma a la segunda necesariamente significa tomar decisiones sobre cómo aplanar algo que no encaja naturalmente en filas y columnas, que es donde vive la mayor parte de la complejidad real de este tipo de conversión — no en leer la sintaxis JSON en sí, que es directa, sino en decidir qué debería siquiera significar una fila de hoja de cálculo para datos que nunca fueron tabulares para empezar.

Cómo los objetos anidados se convierten en nombres de columna con puntos

Un objeto anidado como `{"user": {"name": "Ada", "id": 42}}` no tiene una sola columna obvia en la que convertirse en una tabla plana, así que se aplana en dos columnas separadas — `user.name` y `user.id` — con la notación de punto preservando exactamente de dónde vino cada valor en la estructura original. Esta es una convención ampliamente reconocida específicamente porque es reversible: una columna llamada `user.name` describe sin ambigüedad una ruta de vuelta a una estructura anidada, lo cual importa si el CSV alguna vez necesita convertirse de vuelta a JSON o importarse en un sistema que entiende rutas con puntos como campos anidados.

Los arrays anidados se manejan de forma distinta, y deliberadamente así: en lugar de explotar un array en filas adicionales — lo que cambiaría cuántas filas tiene la tabla dependiendo de cuántos elementos anidados resulten estar dentro de un registro, un efecto secundario genuinamente sorprendente y a menudo no deseado — un valor de array se serializa como texto JSON dentro de una sola celda. El número de filas permanece predecible y coincide exactamente con el número de registros de entrada, que es casi siempre lo que realmente quiere alguien que convierte a una hoja de cálculo, a costa de que esa celda necesite un análisis adicional si su contenido se necesita individualmente.

Manejar una mezcla de registros que no todos tienen los mismos campos

Las respuestas de API reales y el JSON ensamblado a mano frecuentemente contienen registros donde no todos los objetos tienen claves idénticas — un campo opcional presente en algunos registros y ausente en otros, o un esquema que evolucionó con el tiempo así que los registros más antiguos y más nuevos difieren ligeramente. CSV no puede representar esa variación directamente, ya que cada fila necesita alinearse al mismo conjunto fijo de columnas; un programa que lee un archivo CSV no tiene forma de saber que a una fila le "falta" una columna a menos que cada fila tenga explícitamente una celda para ella. La solución es calcular la unión de cada clave vista en cada registro, en el orden en que se encontró cada clave por primera vez, y rellenar una celda vacía para cualquier registro al que le falte un campo dado — así la forma se mantiene consistente en todo el archivo sin descartar silenciosamente las columnas de ningún registro ni desalinear valores en la columna equivocada.

Preguntas frecuentes

¿Qué forma de JSON espera?

Un array de objetos — la forma que devuelve casi cualquier API. Un solo objeto se trata como una tabla de una fila. Los arrays de valores primitivos producen un archivo de una sola columna.

¿Cómo se manejan los objetos anidados?

Se aplanan en nombres de columna con puntos, así que `{"user":{"name":"Ada"}}` se convierte en una columna llamada `user.name`. Los arrays anidados se escriben como texto JSON en una sola celda en lugar de explotarse en filas adicionales, porque cambiar el número de filas casi nunca es lo que quiere una exportación a hoja de cálculo.

¿Qué pasa si mis registros tienen campos distintos?

El conjunto de columnas es la unión de cada clave encontrada, en el orden en que se vio por primera vez. Los registros a los que les falta un campo obtienen una celda vacía en lugar de descartarse o desalinearse.

¿Por qué Excel estropea mi CSV?

Normalmente el delimitador: Excel en muchas configuraciones europeas espera puntos y comas, no comas. Cambia la opción de delimitador. Excel también reformatea los ID numéricos largos como notación científica al abrir — importar mediante Datos → Desde texto evita eso.

¿Se escapan las comillas y comas dentro de los valores?

Sí, según RFC 4180. Los campos que contienen el delimitador, una comilla o un salto de línea se envuelven en comillas, y las comillas internas se duplican — así que el archivo se convierte correctamente de ida y vuelta a través de cualquier lector conforme.