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.
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.
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.
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.
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.
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.
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 · বাংলা