Què fa aquesta eina i per què és diferent
Aquesta pàgina converteix un fitxer JSON en un fitxer CSV directament al vostre navegador. Arrossegueu o seleccioneu un JSON, trieu un delimitador (coma, punt i coma o tabulador) i l’eina mostra una previsualització de la taula abans de descarregar el resultat. Tot el processament és local: cap dada surt del vostre ordinador.
El que fa única aquesta conversió respecte d’altres (com CSV a Excel o Excel a JSON) és la direcció: aneu d’un format jeràrquic i amb tipus de dades (JSON) a un format pla i sense tipus (CSV). JSON admet objectes, arrays, nombres, booleans i null en estructures niades. CSV no té tipus, no admet jerarquies i només té una fulla. La conversió perd tota la informació de tipus, l’estructura niada, les múltiples fulles (que no existeixen en JSON) i el format. Per representar objectes JSON niats en una taula plana, l’eina aplana les claus dels objectes mitjançant la notació de ruta per punts (p. ex. address.city). Els arrays d’objectes es converteixen en files de la taula; els arrays d’arrays es mantenen com files.
Estructura d’entrada: el format JSON “en forma de taula”
Perquè la conversió funcioni, el JSON ha de tenir una estructura que pugui representar-se com una taula. L’eina espera dues formes concretes:
- Un array d’objectes – cada objecte es converteix en una fila, i les claus de l’objecte es converteixen en columnes. Si els objectes tenen camps niats, s’aplanen amb rutes per punts.
- Un array d’arrays – cada array interior es converteix en una fila, i els elements de l’array interior es converteixen en columnes (no hi ha claus d’objecte).
Si el JSON no s’ajusta a cap d’aquestes formes (per exemple, un objecte arrel sense array, o un array que conté tipus barrejats que no es poden tabular), l’eina mostra l’error: “This JSON is invalid or not table‑shaped.” Aquesta és la primera barrera que cal superar. És habitual trobar JSON d’API que tenen un objecte embolcall amb una propietat data que conté l’array; en aquest cas cal extreure l’array manualment abans de carregar-lo, perquè l’eina no fa navegació d’estructures.
Com funciona l’aplanament amb notació de ruta per punts
El cor de la conversió és l’aplanament d’objectes niats. Suposem un JSON com aquest:
[
{
"nom": "Maria",
"adreça": {
"carrer": "Major",
"numero": 10
},
"etiquetes": ["client", "vip"]
}
]
Quan es converteix a CSV, l’objecte adreça s’aplana en dues columnes: adreça.carrer i adreça.numero. L’array etiquetes es tracta de forma diferent segons si és un array d’arrays o no. En aquest cas, etiquetes és un array de valors primitius; l’eina el converteix en una cadena de text (amb els valors separats per comes dins de la cel·la, i la cel·la entre cometes si cal). Així, la fila resultant podria tenir les columnes: nom, adreça.carrer, adreça.numero, etiquetes, amb els valors Maria, Major, 10, "client,vip".
Si en lloc d’un array d’objectes teniu un array d’arrays, com per exemple una matriu de dades sense capçalera:
[
["Joan", 35, "Barcelona"],
["Anna", 28, "Girona"]
]
Llavors cada fila es correspon directament amb un array interior, i les columnes s’anomenen genèricament (col0, col1, col2) o es prenen de la primera fila si l’eina detecta que és una capçalera. La nota de l’eina diu que les claus d’objecte no s’apliquen aquí; la conversió és més directa però perd la semàntica dels noms de columna.
És important decidir abans de la conversió com voleu representar els camps niats. L’eina utilitza rutes per punts per defecte, però si necessiteu un aplanament diferent (per exemple, crear una columna per a cada nivell amb prefixos), haureu de transformar el JSON prèviament amb un script extern. L’eina no ofereix opcions de configuració d’aplanament més enllà del delimitador de sortida.
Pèrdua de tipus i estructura en la conversió a CSV
Un dels fets més rellevants i que cal entendre és que CSV no té tipus de dades. Tot es converteix a text. En la conversió:
- Nombres – es converteixen a la seva representació textual. Però els zeros a l’esquerra es perden. Per exemple,
"00123"en JSON (com a cadena) es manté com00123, però si és el nombre123no hi ha problema. El problema real és si teniu un codi postal com08001emmagatzemat com a nombre: en JSON8001(perquè JSON no permet zeros a l’esquerra en nombres), però si el JSON l’ha generat un sistema que el representa com a cadena, llavors es conserva. Això és una font freqüent d’errors: si el vostre JSON conté codis postals o identificadors numèrics que necessiten zeros a l’esquerra, assegureu-vos que siguin cadenes de text. - Booleans –
trueifalsees converteixen a les cadenes"true"i"false". null– es converteix a una cadena buida (o a la paraulanullsegons el context; l’eina normalment deixa la cel·la buida).- Cadenes amb comes i salts de línia – el CSV requereix que aquests valors es posin entre cometes dobles. L’eina ho fa automàticament. Però si dins d’un valor hi ha cometes dobles, s’escapen duplicant-les (""). Això és un estàndard RFC 4180.
- Estructura niada – tota la jerarquia es perd. Només sobreviu la representació aplanada amb rutes per punts. No podeu recuperar la relació pare‑fill un cop convertit.
La conversió també llença informació sobre múltiples fulles. JSON no té fulles ni pestanyes, però és comú tenir diversos arrays dins d’un mateix fitxer. L’eina només processa el primer array que troba com a arrel de taula. Si el fitxer conté múltiples blocs, cal extreure’ls per separat.
Delimitadors CSV i la seva importància
L’eina permet triar entre tres delimitadors: coma (,), punt i coma (;) i tabulador (\t). Per què és rellevant? Perquè molts programes de full de càlcul i bases de dades esperen un delimitador concret segons la configuració regional. Als Estats Units i molts països anglòfons, el CSV per defecte utilitza la coma com a separador i el punt com a separador decimal. En canvi, a molts països europeus (inclòs l’àmbit català), el punt i coma s’usa com a separador de camps perquè la coma és el separador decimal. Tabulador sovint s’utilitza per a dades que contenen moltes comes (com descripcions de text) per evitar la necessitat de citar.
Si convertiu un JSON amb valors que contenen comes, i després obriu el CSV amb un programa que espera comes com a delimitador, el programa pot interpretar malament les columnes. L’eina gestiona les citacions internes correctament, però la decisió del delimitador de sortida afecta la compatibilitat amb programes posteriors. Per exemple, en obrir un CSV delimitat per punt i coma a Excel amb configuració regional espanyola, les columnes es separen correctament; amb coma no. Per tant, trieu el delimitador que esperi l’eina que rebrà el fitxer.
Errors comuns i limitacions
L’eina mostra diversos missatges d’error que cal conèixer per evitar frustracions:
- “This file is too large. Use a file under ‹max›.” – Hi ha un límit de mida de fitxer, però la fitxa no en dóna el valor exacte. Si el JSON supera aquest límit, no es pot processar.
- “This table has more than ‹max› rows.” i “This table has more than ‹max› columns.” – Límits de dimensions de la taula. Si el JSON genera moltes files o moltes columnes (per exemple, un objecte amb centenars de claus), la conversió es bloqueja.
- “Choose one file first.” o “Choose a CSV, JSON or XLSX file.” – Errors de selecció de fitxer.
- “Conversion cancelled.” – Si l’usuari anul·la el procés.
- “This conversion is taking too long. Try a smaller file.” – Per a fitxers grans que triguin massa.
Totes les operacions són al navegador, cosa que significa que si el procés es bloqueja (per exemple, un bucle infinit en l’aplanament), pot penjar la pestanya. És recomanable provar amb un subconjunt del JSON si es té un fitxer molt gran.
Preguntes freqüents (FAQ)
1. Per què desapareixen els zeros a l’esquerra dels números al CSV?
Perquè JSON tracta 08001 com un nombre, i durant la conversió es converteix a 8001. Per preservar zeros, heu de tenir el valor com a cadena (entre cometes dobles) al JSON original.
2. Què vol dir “not table‑shaped” exactament?
Significa que l’arrel del JSON no és un array d’objectes ni un array d’arrays. Per exemple, un JSON que comença amb { "dades": [...] } no és directament processable. Cal extraure l’array intern abans de carregar-lo.
3. Puc convertir un JSON amb objectes molt niats (tres o quatre nivells de profunditat)?
Sí, l’eina aplana tots els nivells amb rutes per punts: a.b.c.d. Però si el nombre de columnes resultant supera el límit màxim, rebreu un error.
4. El CSV generat es pot obrir directament a Excel? Què passa amb els accents?
L’eina no especifica la codificació; normalment es genera UTF-8 sense BOM. Excel pot interpretar malament els caràcters accentuats si no detecta la codificació. Si obriu el fitxer amb Excel i veieu caràcters estranys, proveu d’importar-lo des de “Dades” > “Des de text/CSV” i seleccionar UTF-8.
5. Què passa si el JSON conté arrays dins d’objectes, com "etiquetes": ["a","b"]?
L’array sencer es converteix en una sola cel·la de text, amb els valors separats per comes i la cel·la entre cometes. No es creen columnes addicionals per a cada element de l’array.
6. Hi ha alguna manera de preservar els tipus de dades (nombre, booleà) al CSV?
No. CSV és text pur. Si necessiteu tipus, haureu d’importar el CSV a un programa que permeti definir tipus per columna (com Excel, Google Sheets o una base de dades).