Convertidor de CSV a JSON - Eina gratuïta de conversió de fitxers en línia
Converteix CSV a JSON i JSON a CSV instantàniament al teu navegador. Conversió de dades segura i ràpida amb vista prèvia i descàrrega. No cal pujar arxius.
Convertidor de fitxers CSV/JSON
Converteix entre formats CSV i JSON amb facilitat. Puja el teu fitxer, previsualitza les dades i descarrega el resultat convertit.
Convertidor de CSV a JSON
Convertidor de JSON a CSV
Documentació
Què és un convertidor de CSV a JSON?
Un convertidor de CSV a JSON és una eina que canvia les dades del format CSV (valors separats per comes) al format JSON (notació d’objectes de JavaScript), o a l’inrevés. Aquest convertidor s’executa íntegrament dins del navegador web. No envia mai el fitxer pujat a cap servidor, de manera que les dades es mantenen al dispositiu de l’usuari.
El CSV és un format de text sense format que s’utilitza per emmagatzemar taules, com ara fulls de càlcul exportats d’Excel o Google Sheets. El JSON és un format de text basat en parelles clau-valor, molt utilitzat per transferir dades entre aplicacions web i API. Com que els dos formats organitzen les dades de manera diferent, convertir-los requereix un conjunt de regles definit, que es descriu a continuació.
Com convertir CSV a JSON
- Feu clic a «Puja un fitxer CSV» i trieu un fitxer
.csvdel dispositiu. - L’eina mostra una previsualització del contingut en brut del fitxer.
- Feu clic a «Converteix a JSON». L’eina llegeix la primera línia com a capçaleres de columna i converteix cada una de les altres línies en un objecte JSON.
- El resultat apareix a la previsualització de sortida, amb sagnat.
- Feu clic a «Baixa el JSON» per desar-lo com a fitxer
.json, o a «Copia el JSON» per copiar el text.
Com convertir JSON a CSV
- Feu clic a «Puja un fitxer JSON» i trieu un fitxer
.json. El fitxer ha de contenir una matriu d’objectes JSON, per exemple[{"Name":"Ann"},{"Name":"Bo"}]. - L’eina mostra una previsualització del text JSON en brut.
- Feu clic a «Converteix a CSV». L’eina recopila cada clau utilitzada en tots els objectes i converteix cadascuna en una columna.
- El resultat apareix a la previsualització de sortida com a text CSV.
- Feu clic a «Baixa el CSV» per desar-lo com a fitxer
.csv, o a «Copia el CSV» per copiar el text.
No hi ha límits de pujada imposats per un servidor, perquè cap dada surt del navegador. Tanmateix, un fitxer molt gran pot alentir la pestanya del navegador, ja que durant la conversió es manté tot el fitxer a la memòria.
Regles de conversió de CSV a JSON
El convertidor llegeix la primera fila del fitxer com a noms de columna. Cada fila següent es converteix en un objecte JSON, amb els noms de columna com a claus. Una fila amb més valors que capçaleres rep claus addicionals, anomenades segons la seva posició absoluta a la fila; per tant, amb 3 capçaleres, el quart valor té la clau field_4, el cinquè field_5, i així successivament. Això vol dir que no es perd cap dada. Una fila amb menys valors rep cadenes buides per a les claus que falten. Si dues capçaleres tenen el mateix nom, la segona es canvia afegint-hi un sufix; així, a, a es converteix en les claus a i a_2.
El convertidor segueix les regles del CSV definides a l’RFC 4180, l’estàndard tècnic del format. Una coma dins d’un camp només es tracta com un valor dins d’aquest camp, i no com un separador de columnes, si el camp està envoltat de cometes dobles, per exemple "Smith, John". Un salt de línia dins de cometes es conserva com a part del valor, en lloc de tractar-se com una fila nova. Dues cometes dobles dins d’un camp entre cometes representen una sola cometa literal.
Només es reconeixen les comes com a separador de columnes; l’eina no detecta ni admet punts i comes, tabuladors ni altres delimitadors.
Cada valor es comprova i es converteix a un tipus:
- Un valor escrit com a nombre sense format, com ara
42o-3.5, es converteix en un nombre JSON. - El text
trueofalse, amb qualsevol combinació de majúscules i minúscules, es converteix en un booleà JSON. - Qualsevol altra cosa es manté com una cadena JSON, incloses les cel·les buides, que es converteixen en cadenes buides.
- Un nombre amb un zero inicial, com ara
00512, es manté com una cadena, perquè el zero inicial sovint té significat, com en un codi postal o un número d’identificació. - Un nombre només s’accepta si, en tornar-lo a escriure, produeix exactament el mateix text. Els enters grans superiors a 9,007,199,254,740,991, el nombre enter més gran que un nombre de JavaScript pot representar exactament, normalment no superen aquesta comprovació i es mantenen com a cadenes, de manera que no es perd cap dígit.
- Un valor que el fitxer ja havia envoltat de cometes sempre es conserva com una cadena, encara que sembli un nombre, ja que les cometes es consideren una indicació de l’autor que es tracta de text.
Les línies buides del fitxer s’ometen i no produeixen objectes buits.
Regles de conversió de JSON a CSV
El convertidor examina cada objecte de la matriu i recopila el conjunt complet de claus utilitzades en tots els objectes. Aquestes claus es converteixen en les capçaleres de columna del CSV, en l’ordre en què apareixen per primera vegada. Si a un objecte li falta una clau que té un altre objecte, la seva cel·la es deixa buida en lloc de produir un error.
La conversió de JSON a CSV no aplana els objectes imbricats en columnes separades. Un valor que és un objecte o una matriu s’escriu com a text JSON dins d’una sola cel·la; així, {"b": 1} es converteix en la cel·la {"b":1} i [1, 2] es converteix en la cel·la [1,2]. No es perd res, però la part imbricada es manté en una sola columna en lloc de dividir-se. Aplaneu manualment el JSON imbricat abans de la conversió si cada part necessita la seva pròpia columna.
Un valor null i una clau que un objecte té però que un altre no té produeixen tots dos una cel·la buida.
Un valor de cel·la que conté una coma, una cometa o un salt de línia s’envolta de cometes dobles a la sortida, i qualsevol cometa que hi hagi a dins es duplica, d’acord amb la regla d’escapament del CSV anterior.
El JSON d’entrada ha de ser una matriu i cada element que conté ha de ser un objecte. Un nombre, una cadena, null o una matriu imbricada en lloc d’un objecte produeix l’error «El JSON ha de ser una matriu d’objectes». Una matriu sense cap element produeix l’error «La matriu JSON és buida. Afegiu-hi almenys un objecte per convertir-la». Un fitxer pujat sense cap contingut produeix l’error «El fitxer pujat és buit».
Exemple resolt
Fitxer CSV inicial:
1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4En convertir-lo a JSON s’obté:
1[
2 {
3 "Name": "Ann Lee",
4 "Age": 29,
5 "Member": true
6 },
7 {
8 "Name": "Bo, Jr.",
9 "Age": 7,
10 "Member": false
11 }
12]
13Observeu que "Bo, Jr." conserva la coma perquè el camp estava entre cometes al fitxer d’origen, i que Age i Member es van convertir en un nombre i un booleà.
En tornar a convertir el mateix JSON a CSV, amb una fila afegida en què falta Age, s’obté:
1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4Cy Tan,,true
5El valor Age que falta es converteix en una cel·la buida, i la coma de "Bo, Jr." fa que el camp torni a quedar entre cometes durant la conversió de sortida.
Usos habituals
- Anàlisi de dades: convertir una exportació CSV d’un full de càlcul o d’una eina d’anàlisi en JSON perquè es pugui processar amb JavaScript, i després tornar a convertir els resultats a CSV per a un informe.
- Proves d’API: un desenvolupador que crea una API que accepta pujades de CSV pot convertir fitxers d’exemple a JSON per comprovar que un analitzador produeix els objectes esperats.
- Migració de dades: traslladar registres d’un sistema que exporta CSV a un sistema que només accepta JSON, o a l’inrevés.
- Inspecció ràpida: convertir un fitxer JSON en un CSV semblant a una taula per llegir-lo més fàcilment, o fer el procés invers.
Les biblioteques de programació ofereixen la mateixa conversió per a tasques més grans o repetides, com els mòduls csv i json de Python, o pandas. Les eines de línia d’ordres, com csvkit i jq, gestionen la conversió i el filtratge des d’un terminal. Aquestes opcions són adequades per al processament per lots; aquesta eina del navegador és adequada per a un fitxer puntual sense instal·lar res.
Preguntes freqüents
El fitxer pujat s’envia a un servidor? No. La conversió s’executa en JavaScript dins de la pestanya del navegador. El fitxer es llegeix des del dispositiu local i no es transmet mai.
El convertidor admet delimitadors diferents de la coma, com ara un punt i coma o un tabulador? No. La versió actual només llegeix valors separats per comes. Un fitxer que utilitzi un delimitador diferent s’ha de convertir primer al format separat per comes, per exemple substituint el delimitador en un editor de text.
Per què un nombre com 00512 s’ha mantingut com una cadena de text a la sortida JSON?
Els zeros inicials solen tenir significat, com en un codi postal, de manera que el convertidor conserva aquest valor com una cadena en lloc de convertir-lo en el nombre 512, cosa que eliminaria el zero.
Què passa si converteixo JSON que conté objectes imbricats?
L’objecte imbricat s’escriu com a text JSON en una sola cel·la, per exemple {"b":1}. Les dades es conserven, però no es divideixen en columnes separades. Aplaneu primer les dades imbricades si cada camp necessita la seva pròpia columna.
Què passa si el meu JSON no és una matriu d’objectes?
L’eina mostra un error i no converteix res. L’entrada ha de ser una matriu JSON en què cada element sigui un objecte, per exemple [{"a":1},{"a":2}].
La primera fila d’un fitxer CSV sempre ha de ser una fila de capçalera? Sí. El convertidor sempre tracta la primera fila com a noms de columna. Un fitxer sense fila de capçalera farà que la primera fila de dades es llegeixi erròniament com a capçaleres.
Referències
- Shafranovich, Y. "Common Format and MIME Type for Comma-Separated Values (CSV) Files." RFC 4180, IETF, octubre de 2005. https://www.rfc-editor.org/rfc/rfc4180
- Bray, T., ed. "The JavaScript Object Notation (JSON) Data Interchange Format." RFC 8259, IETF, desembre de 2017. https://www.rfc-editor.org/rfc/rfc8259
- "Working with JSON." MDN Web Docs, Mozilla. https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON