Cookies de estadística y publicidad
Usamos cookies de estadística y de publicidad, y ambas van a Google. Si rechazas, para ti no cambia nada visible.Ir a la página de privacidad
Aquí puedes convertir JSON a CSV gratis y sin cuenta: suelta el archivo arriba y en un par de segundos tienes el resultado listo para descargar. La conversión ocurre en tu propio navegador, así que el archivo no se sube nunca. Funciona igual en Windows, macOS y Linux que en iPhone y Android, y sigue funcionando aunque cortes la conexión.
Hasta 100 archivos a la vez. Mezclar formatos no es problema.
Se convierten uno tras otro y vuelven juntos en un ZIP.
JSON a CSV
Conviene entender esto antes de convertir nada. Un JSON describe un árbol: un objeto puede contener otro objeto, que puede contener una lista de objetos, hasta donde haga falta. Un CSV describe una cuadrícula: filas, columnas y nada dentro de una celda.
Así que esto no es traducir dos maneras de escribir lo mismo. Es proyectar, y algo tiene que ceder. Si los datos son de verdad una lista de registros planos —que es lo que son casi todas las exportaciones— no se pierde nada en absoluto. Si tienen estructura de verdad, el CSV es una aproximación legible y el JSON sigue siendo el archivo bueno.
Un objeto dentro de otro se aplana uniendo los nombres con un punto: si cada registro lleva un `cliente` que a su vez lleva una `ciudad`, la columna resultante se llama `cliente.ciudad`. Las posiciones de una lista entran en ese mismo camino como números, de forma que el segundo teléfono aparece como `telefonos.1`.
Un nivel de anidamiento produce una tabla que cualquiera lee. Dos suele seguir siendo manejable. A partir de ahí se degrada deprisa: nombres larguísimos, tablas muy anchas y la mayoría de las celdas vacías porque cada registro anida a su manera. Si de una exportación aparentemente sencilla salen sesenta columnas, eso es la forma real de los datos asomando, no un fallo de la conversión.
Aquí se escribe un CSV separado por comas, que es lo que dice el nombre del formato y lo que espera casi cualquier programa. Y en un Windows configurado en español, Excel abre ese archivo y mete toda la fila en la primera columna, porque en la configuración regional española el separador de listas es el punto y coma: la coma está ocupada haciendo de separador decimal.
La solución no es cambiar el archivo, que está bien, sino la forma de abrirlo: Datos, y luego «Obtener datos» o «Desde texto/CSV», eligiendo la coma como delimitador. Ese camino sirve además para lo siguiente, porque es donde se puede fijar el tipo de cada columna antes de cargarla.
Los valores numéricos del JSON se escriben con punto decimal, porque eso es lo que significa un número en JSON. Excel en español lee `3.5` con separador de miles y lo interpreta como treinta y cinco, o como texto, según le parezca. Es la segunda mitad del mismo problema regional y por el mismo motivo.
A eso se suma lo de siempre: los códigos postales que empiezan por cero pierden el cero, un DNI o una referencia larga se convierte en coma flotante y se le va la última cifra, y cualquier cosa con pinta de fecha se convierte en fecha con el criterio del sistema. Importar en lugar de abrir, y marcar como texto las columnas que son identificadores, evita las cuatro cosas de una vez.
Un pedido con cuatro líneas, una entrada con tres etiquetas o una ficha con varias direcciones anteriores no tiene una representación correcta en una tabla. Aquí se resuelve por el camino descrito arriba —una columna por posición, `lineas.0`, `lineas.1`, y así— y ese camino se rompe en cuanto un registro tiene cinco elementos y otro tiene uno.
Cuando las listas son el contenido y no un adorno, la respuesta honesta es no convertir. O te quedas con el JSON, o produces dos tablas como haría una base de datos: una de pedidos y otra de líneas, unidas por un identificador. Un CSV con `lineas.0.precio` hasta `lineas.11.precio` es técnicamente válido y no lo va a usar nadie.
Los registros de una exportación no están obligados a tener las mismas claves. Una API devuelve los campos que existen y omite los que no, así que cien registros pueden presentar ochenta formas distintas.
La conversión lo resuelve recorriendo todos los registros y quedándose con la unión de las claves, en el orden en que aparecen por primera vez, y dejando vacía la celda del registro que no tenía ese valor. Eso explica una sorpresa frecuente: convertir una muestra de diez registros da menos columnas que convertir el archivo entero, sencillamente porque la muestra no contenía los campos raros.
Un valor que contiene una coma, una comilla o un salto de línea se escribe entre comillas dobles, y una comilla dentro de él se duplica. Bien hecho, una celda puede contener un párrafo entero. Aquí se escribe así siempre que hace falta, de modo que el CSV que baja está bien formado.
El riesgo está en lo que venga después. Una dirección como «Calle Mayor 4, 3º B» ocupa una celda entrecomillada perfectamente correcta, y un script casero que parta la línea por comas la romperá en dos columnas y desplazará el resto de la fila. Si el destino es un programa propio, que lea el CSV con una biblioteca de verdad y no con un `split`.
Convierte cuando los datos son registros planos y el destino es una hoja de cálculo, una importación a base de datos, una herramienta estadística o una persona. Eso cubre casi todo lo que exportan las plataformas de analítica, los CRM, los formularios y los paneles de facturación, y el CSV les resulta más cómodo que el JSON a todos ellos.
No conviertas cuando la estructura es el contenido: un archivo de configuración, una respuesta de API que vas a recorrer con código, cualquier cosa con listas que signifiquen algo. Y guarda el JSON en los dos casos, porque es el archivo que sigue conteniéndolo todo y volver a generar el CSV cuesta segundos.
Un array JSON tiene que estar completo para poder analizarse, porque lo que lo hace válido es el corchete de cierre. Así que un archivo grande hay que leerlo entero, y eso es una propiedad del formato antes que de ninguna herramienta.
El límite libre son 100 MB por archivo, y se pueden soltar hasta cien archivos de una vez. Eso no cambia con NDJSON: aquí también se lee el archivo entero antes de convertir, sea un array o un objeto por línea. Lo que NDJSON aporta es otra cosa, y sigue siendo una razón real para pedirlo si controlas el volcado: cada línea se analiza por separado, así que la línea concreta que esté mal falla con su propio número y dieciocho mil líneas correctas no se pierden por una que llegó truncada, al contrario que un array JSON, que tiene que estar completo y ser válido de un extremo a otro para analizarse.
El JSON es UTF-8 por definición y el CSV que sale de aquí también, así que las tildes, las eñes y los signos de apertura sobreviven intactos. El punto delicado vuelve a estar en Excel para Windows, que históricamente ha supuesto una página de códigos regional cuando abre un archivo de texto.
El apaño habitual —escribir una marca de orden de bytes al principio para avisar de que el archivo es UTF-8— tiene su propia víctima: muchos analizadores ven esos tres bytes como parte del primer nombre de columna y una comparación contra `id` falla sin explicar por qué. Importar desde el asistente de Excel eligiendo UTF-8 resuelve el asunto sin ensuciar el archivo para el resto del mundo.
La conversión ocurre en tu navegador, sobre tu procesador. El archivo no se transmite, no hay cuenta ni cupo diario, y la pestaña de red durante una conversión lo confirma sin necesidad de creer una frase.
Aquí eso pesa más que en otras conversiones. Un JSON exportado suele ser la salida cruda de una API: fichas de clientes, historiales de pedidos, envíos de formularios, cuentas de usuario, y con frecuencia campos que nadie revisó porque nadie esperaba que se leyeran. En datos personales de clientes españoles o latinoamericanos, no enviarlos a ninguna parte es la respuesta corta a una conversación larga con el responsable de protección de datos.
| JSON | CSV | |
|---|---|---|
| Nombre completo | JavaScript Object Notation | Comma-Separated Values |
| Extensión de archivo | .json | .csv |
| Tipo de medio | application/json | text/csv |
| Publicado por primera vez | 2001 | 1972 |
| Especificación | RFC 8259 | RFC 4180 |
| Licencia | Estándar abierto | Estándar abierto |
| Situación actual | Vigente | Vigente |
| Se abre en el navegador | Todos los navegadores | Ningún navegador |
| Considerado en su lugar | XML, YAML, NDJSON | XLSX, Parquet |
Ningún navegador lee CSV. Es el menos portátil de los dos, así que conviene asegurarse de que el destinatario lo acepta antes de enviarlo.
Los programas de siempre no coinciden: JSON se abre en Visual Studio Code, jq y Postman, y CSV en Microsoft Excel, LibreOffice Calc y pandas, así que quien reciba el resultado necesita alguno del segundo grupo.
JSON se publicó en 2001. Está recogido en RFC 8259, y conviene conocerlo si el archivo tiene que sobrevivir a la herramienta que lo escribió.
CSV es de 1972, recogido en RFC 4180. Microsoft Excel, LibreOffice Calc y pandas lo leen.
CSV se publicó en 1972 y JSON en 2001. El más antiguo suele ser el archivo más seguro para entregar; el más reciente hace lo mismo con menos bytes.
No. Esta conversión ocurre por completo en tu navegador, así que el archivo no sale de tu dispositivo. Puedes comprobarlo tú: abre la pestaña de red de las herramientas de desarrollo y convierte algo. Verás la propia página y las peticiones de estadística y publicidad con las que se paga este servicio, y ni una sola que lleve tu archivo.
Sí. Sin cuenta, sin marca de agua y sin cupo diario que se gaste: se ejecuta en tu propio equipo, así que puedes volver tantas veces como quieras. El navegador procesa archivos de hasta 100 MB, 100 a la vez.
JSON y CSV describen el contenido de maneras radicalmente distintas. La conversión es por tanto una reconstrucción y no una copia: fiel, pero no idéntica byte a byte. Los objetos anidados se aplanan en columnas. Los datos muy anidados pierden su forma.
Ningún navegador lee CSV. Es el menos portátil de los dos, así que conviene asegurarse de que el destinatario lo acepta antes de enviarlo.