Cómo se usa
Elige la dirección en las pestañas de arriba (CSV → JSON o JSON → CSV) y pega tus datos en el cuadro de entrada o arrastra un archivo .csv, .tsv, .txt o .json. Al arrastrar un archivo, la dirección cambia sola según su extensión. El resultado se actualiza mientras escribes y puedes llevártelo con el botón de copiar o de descargar. Debajo del resultado aparecen las primeras 10 filas (hasta 30 columnas) en una tabla, para que compruebes de un vistazo que las columnas se han separado bien.
En CSV → JSON eliges si la primera fila es el encabezado (las claves). Si lo activas, obtienes un array de objetos como [{"name":"Kim","age":30}]; si lo desactivas, un array de arrays como [["name","age"],["Kim",30]]. La sangría puede ser de 2 espacios, 4 espacios, un tabulador o en una línea.
La primera conversión CSV → JSON descarga la biblioteca papaparse. JSON → CSV no necesita ninguna biblioteca de conversión adicional.
Reglas del formato CSV (RFC 4180)
CSV tiene muchas variantes, pero la referencia más citada es la RFC 4180, publicada en 2005. Sus reglas principales son:
- Cada línea es un registro y los campos se separan con comas. La primera línea puede ser un encabezado o no.
- Si un campo contiene una coma, unas comillas dobles o un salto de línea, todo el campo va entre comillas dobles, por ejemplo
"Seoul, Korea". - Las comillas dentro de un campo se escriben dos veces:
"say ""hi"""significasay "hi". - Los espacios forman parte del campo. Los espacios al principio o al final no se eliminan automáticamente.
En JSON → CSV, esta herramienta entrecomilla los campos según estas reglas (y también los que empiezan o acaban con un espacio) y termina las líneas con CRLF, como indica la RFC 4180. En CSV → JSON, si unas comillas no se cierran nunca (los datos acaban en "abc) o hay texto después de las comillas de cierre ("x"y), en lugar del resultado verás el número de línea aproximado. Las filas con un número de campos distinto al del encabezado se convierten igualmente, con un aviso que indica sus números de línea.
Delimitadores distintos de la coma
Pese al nombre, muchos archivos «CSV» no usan comas. Excel guarda los CSV con el separador de listas de la configuración regional de Windows, y en las regiones que usan coma decimal, como Alemania, Francia o España, ese separador es el punto y coma (;), para que no choque con números como 1,5. Las tablas copiadas de una base de datos o de una hoja de cálculo suelen ir separadas por tabuladores (TSV), y en los archivos de registro también se usa la barra vertical (|).
Con el delimitador en «Detectar automáticamente», la herramienta revisa los primeros 20 registros (dentro de los primeros 64 KB de la entrada), cuenta cuántas veces aparecen la coma, el punto y coma, el tabulador y la barra vertical fuera de las comillas, y elige el que tiene un recuento más constante de una línea a otra. El delimitador detectado aparece debajo del selector; si no es el correcto, elígelo tú.
Cómo se convierten los números y true/false
En un CSV, todos los campos son texto. Con «Convertir números y true/false» activado solo cambian dos cosas para que el JSON sea más cómodo de usar: true y false (en mayúsculas o minúsculas) pasan a ser booleanos, y los valores que siguen la sintaxis numérica de JSON pasan a ser números. Todo lo demás se queda como texto. Es el caso de +1, .5, un valor con un espacio delante o detrás y una celda con null o yes. En un archivo cuyo delimitador no es la coma, 1,5 también se queda como texto. Si el delimitador es la coma, un 1,5 sin comillas se divide en dos celdas, 1 y 5, y cada una pasa a ser un número. -5 también pasa a ser un número. Un valor que se lee como notación exponencial, como 1E5, también pasa a ser un número (100000), así que desactiva la opción si tus datos tienen códigos de ese tipo.
Algunos valores se dejan sin tocar a propósito. Los que llevan ceros a la izquierda (código postal 01234, código 007) perderían esos ceros como número, así que se quedan como texto. Un decimal que empieza por un solo 0, como 0.5, sí se convierte en número. Los valores que los números de JavaScript no pueden representar con exactitud, es decir, los enteros mayores que 9007199254740991 (2^53 − 1) y los decimales con más de 15 cifras significativas, también se quedan como texto para que su valor nunca cambie sin avisar. Los campos vacíos pasan a ser una cadena vacía (“”), no null.
Cómo se aplana el JSON anidado en CSV
Un CSV es una tabla plana y no puede guardar JSON anidado tal cual. Esta herramienta lo aplana con estas reglas:
- Los objetos anidados se convierten en claves con notación de puntos:
{"address":{"city":"Seoul"}}→ columnaaddress.city - Los arrays no se aplanan; van a una celda como texto JSON:
["a","b"] - null pasa a ser una celda vacía; un objeto vacío se escribe como
{}. - Las columnas son todas las claves de todos los objetos, en el orden en que aparecen por primera vez. Si a un objeto le falta una clave, la celda queda vacía.
La entrada habitual es un array de objetos. Un solo objeto se convierte en una tabla de una fila, y en un array de arrays cada array interior pasa tal cual a ser una fila. Si una clave original ya contiene un punto ("a.b"), puede coincidir con una clave aplanada dentro del mismo objeto. Si coinciden, solo queda el valor que está escrito después en ese objeto: con {"a":{"b":1},"a.b":2} la celda a.b contiene 2 y, con las dos claves en el orden contrario, 1.
A cada elemento del array más externo le corresponde siempre una sola fila, contenga lo que contenga. [{"id":1,"items":[{"sku":"A"},{"sku":"B"}]}] produce una única fila bajo el encabezado id,items; si necesitas una fila por cada elemento de items, introduce solo el array interior, [{"sku":"A"},{"sku":"B"}]. Volver a pasar por CSV → JSON un CSV creado así no reconstruye la estructura original: items vuelve como una cadena con ese texto, no como un array, y una columna como address.city sigue siendo una sola clave llamada "address.city", no un objeto anidado.
Tildes, coreano o japonés estropeados en Excel (BOM)
Si abres con doble clic en Excel un CSV guardado en UTF-8, las tildes, la ñ o el texto coreano y japonés pueden verse como caracteres ilegibles. Excel lee el archivo como UTF-8 si empieza por un BOM (Byte Order Mark, en UTF-8 los bytes EF BB BF); si no lo tiene, usa la codificación predeterminada del ordenador. En JSON → CSV, «Añadir BOM UTF-8 para Excel» pone un BOM al principio del archivo que obtienes con el botón de descargar (data.csv, o data.tsv si el delimitador es «Tabulador») y evita el problema. La opción viene activada desde el principio. El texto que te llevas con el botón de copiar nunca incluye el BOM. El BOM solo se añade al archivo descargado, así que el texto del cuadro de resultado no lo lleva ni con la opción activada. Si ya tienes un archivo guardado sin BOM, no hace falta convertirlo otra vez: en lugar de abrirlo con doble clic, impórtalo en Excel con Datos → Desde el texto/CSV.
Unos pocos programas leen el BOM como parte del primer encabezado, así que, si el archivo no va a Excel, es más seguro dejar la opción desactivada. En la dirección contraria, CSV → JSON quita automáticamente el BOM del principio de un archivo o de la entrada.
