Generador cron d’AWS
Generador cron
Comptador de text
JSON a CSV
CSV a JSON
Conversor de timestamp Unix
Generador d’UUID v4 i v7
JSON a TypeScript
Markdown a PDF
Base 64
Imatges
JSON
Codi QR
Contrasenyes
Unitats
Hash
Colors
Eines PDF
Editor de PDF
Codificador d'URL
Conversor de majúscules i minúscules
Lorem Ipsum
Comprovador de regex
Descodificador JWT
Diferència de text
Optimitzador SVG
Visualitzador EXIF
Extractor de colors
Generador de favicons
Convertidor universal
Convertidor d'hores
Divisor de PDF
Imatges a PDF
PDF a Imatge
Eliminar Fons
Tornar al BlogUTILX / Notes i guies

De JSON a CSV sense perdre de vista les dades: columnes, objectes i Excel

Objectes JSON convertits en columnes d’un full de càlcul

JSON i CSV representen les dades des de perspectives diferents. JSON distingeix cadenes, nombres, booleans, null, propietats absents, matrius i objectes imbricats. CSV organitza registres i camps, però no incorpora un sistema universal de tipus ni una representació pròpia dels objectes. Per convertir bé, cal decidir quina informació formarà columnes i quines diferències es perdran durant el procés.

Aquesta guia utilitza el convertidor de JSON a CSV amb dos registres sintètics. Inclou identificadors amb zeros inicials, valors absents, dades imbricades i text que un full de càlcul podria interpretar com una fórmula. L’objectiu és preparar un fitxer que el destinatari pugui interpretar amb criteris coneguts i comprovables.

Defineix la taula abans de descarregar-la

L’entrada ha de ser una matriu JSON formada exclusivament per objectes. Cada objecte representa un registre. Les columnes segueixen l’ordre en què apareixen per primera vegada les claus pròpies al llarg de tots els registres. Una propietat que només aparegui al darrer objecte també entra a la capçalera. Per això, mirar únicament el primer registre no permet anticipar totes les columnes.

Una propietat absent i un valor null produeixen una cel·la buida. Un objecte o una matriu imbricats es converteixen en text JSON dins d’una cel·la; no es despleguen en columnes amb noms com address.city. Aquesta decisió evita inventar una convenció de noms, però exigeix que el receptor sàpiga què contenen aquestes cel·les. Convertir amb èxit no vol dir conservar automàticament tota l’estructura original.

Un exemple fix amb valors delicats

Fes servir exactament aquesta entrada per comparar resultats:

[
  {
    "id": "0012",
    "name": "Ana",
    "note": "=SUM(A1:A2)",
    "profile": { "tier": "pro" },
    "tags": ["docs", "qa"],
    "active": true,
    "score": null
  },
  {
    "id": "0013",
    "name": "Bela",
    "note": "+441234",
    "tags": [],
    "active": false
  }
]

Amb coma, sense BOM i amb protecció de fórmules, la capçalera és id,name,note,profile,tags,active,score. Els identificadors procedeixen de cadenes i conserven els zeros al fitxer exportat. profile i tags es serialitzen com a JSON dins de les cel·les. El segon perfil queda buit perquè no existeix; les dues cel·les de score queden buides, tot i que només la primera contenia null explícit.

Les notes que semblen fórmules reben un apòstrof inicial. L’eina avisa que ha modificat aquests valors expressament. Comprova aquesta transformació amb un editor de text, perquè el programa que obri el CSV pot mostrar o amagar l’apòstrof segons les seves pròpies regles d’importació.

Converteix, inspecciona i torna a importar

Enganxa l’exemple i mantén activada la protecció de fórmules. Tria coma si el receptor demana aquest separador, punt i coma si el seu procés ho requereix o tabulador si accepta camps tabulats. En alguns entorns regionals, la coma s’utilitza com a separador decimal, però això no autoritza a canviar el delimitador sense comprovar el contracte d’importació.

Revisa la previsualització: mostra com a màxim 100 files i 50 columnes per mantenir la pàgina manejable. La descàrrega inclou tot el resultat acceptat, no només el fragment visible. Obre el fitxer descarregat en un editor de text i comprova l’ordre de les columnes, les cometes duplicades dins dels camps JSON i els apòstrofs de les notes.

Importa’l després al full de càlcul indicant UTF-8 i el mateix delimitador. Si el receptor necessita una marca d’ordre de bytes UTF-8 per detectar els accents, activa BOM i repeteix l’exportació. Aquesta marca és informació al principi del fitxer, no una columna. Finalment, segueix la guia de CSV a JSON per contrastar la lectura amb les transformacions documentades.

Per què el resultat adopta aquesta forma

RFC 8259 descriu els valors JSON i els noms de propietat. RFC 4180 documenta la convenció habitual de CSV amb registres, camps, comes i cometes internes duplicades. Cap dels dos documents estableix una correspondència universal entre formats. La unió de columnes, la serialització dels valors imbricats i les cel·les buides són decisions del convertidor.

Les cometes CSV tenen una funció estructural. Un camp que contingui el delimitador, cometes o un salt de línia necessita protecció; una cometa interna es representa dues vegades. No eliminis les cometes al voltant de {"tier":"pro"} perquè semblin excessives. Permeten que un lector CSV recuperi tota la cel·la i que un segon lector JSON n’interpreti el contingut.

La protecció de fórmules tracta un problema diferent. Un full de càlcul pot interpretar text que comença amb =, +, - o @ com una expressió. Afegir un apòstrof modifica el text deliberadament i genera un avís. No és una garantia universal sobre qualsevol comportament del programa receptor. Desactiva aquesta opció només si necessites text exacte sense aquest canvi i controles les dades per altres mitjans.

Diagnostica els errors de conversió

L’error de matriu d’objectes indica que l’arrel no és una matriu o que algun element és primitiu o null. Envolta un objecte sol amb una matriu només si realment representa una fila. Si les dades barregen tipus, normalitza-les a l’origen amb un esquema explícit, sense inventar columnes per sortir del pas.

Es rebutgen entrades superiors a 2 MiB en UTF-8 i més de 10.000 registres. També hi ha un límit d’un milió de cel·les a la graella expandida de sortida. Molts objectes dispersos amb claus diferents poden superar aquesta protecció encara que el text d’entrada sigui petit. Divideix les dades per grups coherents i conserva un registre extern dels lots.

L’avís de nombre insegur exigeix revisar l’origen. Un enter JSON massa gran pot haver perdut precisió durant l’anàlisi nativa, abans d’escriure el CSV. No es promet conservar exactament aquests dígits numèrics. Els identificadors grans s’han d’enviar entre cometes com a cadenes des del principi. Convertir-los en text després d’un arrodoniment no recupera la informació perduda.

Fes que el lliurament sigui reproduïble

Anota el delimitador, l’opció BOM, la protecció de fórmules, les capçaleres, el recompte de registres i el significat dels buits. El receptor no pot deduir si una cel·la buida corresponia a null, a una propietat absent o a una cadena buida. Si aquesta diferència importa, afegeix una columna d’estat abans de convertir o utilitza un format que la conservi.

Les cel·les amb JSON imbricat són útils quan un altre programa les interpretarà. Per a edició manual, poden resultar més clares diverses columnes o una taula relacionada. Abans de desplegar propietats, acorda les regles de noms i de col·lisions. Evita canviar l’esquema segons l’aspecte d’una sola fila.

La conversió es fa al navegador i no necessita pujar el conjunt de dades. La descàrrega, però, crea una còpia amb les regles normals d’emmagatzematge del navegador i del sistema operatiu. Utilitza dades sintètiques per provar i aplica les normes habituals d’accés i conservació. La guia de privacitat de les eines amplia aquest procés.

Què no garanteix aquesta conversió

CSV no disposa d’un esquema universal, un marcador estàndard de nul·litat ni una sintaxi pròpia per a objectes. Una descàrrega correcta no demostra que tots els fulls de càlcul i carregadors de bases de dades interpretaran els camps igual. L’eina no avalua fórmules, no interpreta nombres regionals i no recupera diferències entre propietats absents i valors nuls.

La previsualització limitada no retalla la descàrrega. En canvi, superar els límits d’entrada, registres o expansió impedeix convertir; no genera una exportació parcial presentada com a completa. Els valors imbricats continuen sent text JSON i els nombres insegurs requereixen corregir la representació original. Per a processos grans, utilitza validacions específiques de l’esquema i del destinatari.

Comprovacions abans de compartir

Confirma que l’entrada conté objectes, respecta 2 MiB i 10.000 registres, i no expandeix més d’un milió de cel·les. Revisa les propietats que apareixen tard. Acorda el delimitador, decideix si cal BOM i documenta qualsevol canvi fet per la protecció de fórmules.

Inspecciona la descàrrega completa: comprova 0012, els camps profile i tags, i els apòstrofs de =SUM(A1:A2) i +441234. Importa els identificadors com a text al programa receptor perquè no n’elimini els zeros. Contrasta el nombre de registres i les cel·les buides amb la política acordada abans de distribuir el fitxer.

Fonts: RFC 8259: format d’intercanvi JSON, RFC 4180: format comú dels fitxers CSV i OWASP: injecció CSV.