Convertir CSV a JSON y viceversa sin romper los datos
CSV es una tabla de texto plano: un registro por línea, con los campos separados por un delimitador, normalmente una coma. Se rompe cuando un campo contiene el delimitador, unas comillas dobles o un salto de línea, porque el lector debe distinguir la estructura del contenido. Sigue las reglas de entrecomillado, revisa el delimitador y la fila de encabezado, y mantén los números con ceros a la izquierda como texto. El resto del artículo explica qué puede y qué no puede conservar una ida y vuelta.
CSV a JSONNecesito pasar CSV a JSON, o al revésÚsalo gratisQué es realmente un archivo CSV
CSV no tiene un estándar único y oficial, pero RFC 4180 describe la forma más común, y la mayoría de los programas la siguen. Sus reglas básicas caben en una lista corta:
- Cada registro ocupa su propia línea, y la RFC indica que las líneas terminan con un retorno de carro y un salto de línea, CRLF.
- Los campos se separan con comas.
- Un campo que contiene una coma, unas comillas dobles o un salto de línea va entre comillas dobles.
- Unas comillas dobles dentro de un campo entrecomillado se escriben como dos comillas dobles.
Así, la fila 1001,"Smith, Ann",02134 tiene tres campos, porque la coma dentro de las comillas forma parte del contenido. Un separador que corte en cada coma encontrará cuatro. El lector de fixmint aplica estas reglas: un campo entre comillas puede contener el delimitador, saltos de línea y comillas dobles duplicadas, y una comilla sin cerrar se notifica indicando la línea donde empieza.
Por qué cambia el delimitador
La coma es el delimitador por defecto de la RFC, pero en los países donde la coma es el separador decimal, así que 1,5 significa uno y medio, las hojas de cálculo suelen guardar los CSV con punto y coma. Los archivos separados por tabulaciones (TSV) evitan el conflicto en la mayoría de los datos, porque las tabulaciones rara vez aparecen dentro del texto.
El menú «Delimitador» ofrece Automático, Coma, Punto y coma, Tabulación y Barra vertical. Automático lee las primeras diez líneas, cuenta cada candidato fuera de las comillas y elige el que tiene el recuento por línea más constante. Elige tú el delimitador cuando Automático se equivoque.
Convertir en fixmint
El ejemplo usa las opciones por defecto de la herramienta CSV a JSON.
Ejemplo práctico
Pega este CSV, con «La primera fila es el encabezado» marcado:
id,name,zip,note
1001,"Smith, Ann",02134,"She said ""hi"""
1002,Bo,10001,"line one
line two"
Con «Convertir números» desactivado y la sangría de JSON en 2 espacios, la herramienta devuelve:
[
{
"id": "1001",
"name": "Smith, Ann",
"zip": "02134",
"note": "She said \"hi\""
},
{
"id": "1002",
"name": "Bo",
"zip": "10001",
"note": "line one\nline two"
}
]
Con «Convertir números» activado, id y zip 10001 se convierten en números, y 02134 se mantiene como texto.
Pasos
- Pega el CSV o arrastra un archivo .csv, .tsv, .txt o .json.
- Revisa «La primera fila es el encabezado», el Delimitador y «Convertir números». Elige una sangría de JSON de 2 espacios, Tabulación o Minificado.
- Copia el resultado o descárgalo como .json.
Mantén los números como texto
Los números JSON no pueden tener ceros a la izquierda, así que 02134 no es un número JSON válido. Los códigos postales, los números de teléfono y los códigos de producto deben quedar como texto, o el cero desaparece. Con «Convertir números» activado, la herramienta convierte 10001 pero mantiene 02134 como cadena. La opción está desactivada por defecto. Solo convierte valores con punto como separador decimal, así que 1,5 en un archivo con punto y coma se queda tal como lo escribiste.
Los identificadores largos también requieren cuidado. JavaScript, que ejecuta la mayoría del JSON en el navegador, guarda los números como valores de coma flotante de 64 bits. Los enteros son exactos solo hasta 9.007.199.254.740.991, que es dos elevado a 53 menos 1. El número 12345678901234567890 se convierte en 12345678901234567000 cuando un programa de JavaScript lo lee. La herramienta escribe los dígitos tal como los escribiste, pero un programa que analiza el JSON en JavaScript los redondeará. Guarda los IDs como cadenas. El formateador de JSON también conserva esos números exactamente como se escriben, e indica cuántos ha conservado.
JSON anidado y vuelta a CSV
CSV es plano y JSON puede anidarse. Al convertir JSON a CSV, se crea una columna por cada clave de todos los objetos, en el orden en que cada clave aparece por primera vez. Un objeto o una lista anidados se colocan en su celda como texto JSON, un null se convierte en una celda vacía, y true y false se escriben como palabras. Las filas se unen con CRLF, y un campo solo va entre comillas cuando contiene el delimitador, una comilla, un salto de línea o espacios al principio o al final.
La entrada que empieza por [ o { se lee como JSON. El botón de intercambio cambia el sentido, con la etiqueta CSV → JSON o JSON → CSV. En el sentido JSON → CSV, las opciones de salida muestran un menú «Delimitador» y una opción «Para Excel».
Una ida y vuelta pierde información. Un null y una cadena vacía se convierten en una celda vacía, y el anidamiento no se recupera, así que guarda el JSON original si necesitas su estructura.
Excel, UTF-8 y la marca de orden de bytes (BOM)
Un archivo CSV son bytes, y el lector debe conocer la codificación. UTF-8 admite letras acentuadas y otros alfabetos. Una marca de orden de bytes (BOM), tres bytes al principio del archivo, indica que el archivo es UTF-8. Sin ella, algunos programas de hojas de cálculo leen el archivo en la página de códigos local, y las letras acentuadas se convierten en caracteres extraños. Las hojas de cálculo también suelen convertir 02134 en 2134 al abrir un CSV.
La opción «Para Excel» añade la BOM solo al CSV descargado, nunca al texto copiado, y solo en el sentido JSON → CSV. El lector elimina la BOM de la entrada, así que un archivo que ya la tiene se convierte sin error.
Casos límite
- Filas irregulares. Con el encabezado activado, una fila corta se rellena con valores vacíos, y una fila más larga conserva sus valores extra como column_N. El resultado indica cuántas filas difieren del encabezado.
- Encabezados repetidos o vacíos. Un nombre repetido recibe _2, _3 y así sucesivamente, y un nombre vacío se convierte en column_N. Ambos cambios evitan que dos claves se sobrescriban.
- Comillas tipográficas. Las comillas inteligentes de un procesador de textos no son comillas CSV, así que un campo como “Smith, Ann” se divide en su coma. Enderézalas antes con arreglar texto pegado o como se describe en la guía de comillas tipográficas.
- Saltos de línea dentro de comillas. Un campo que ocupa dos líneas es un solo registro, pero eliminar líneas duplicadas divide su entrada en cada salto de línea, así que trataría las dos mitades como filas separadas. Convierte a JSON y compara los objetos, o revísalo a mano. La herramienta sigue siendo útil para listas de un valor por línea.
- Archivos grandes. El cuadro de resultados muestra los primeros 100.000 caracteres, pero Copiar y la descarga incluyen la salida completa.
- JSON no válido. El conversor indica la línea y la columna de un error, con un marcador (^) bajo el carácter. El formateador de JSON explica los errores comunes, y la guía de errores de JSON los trata con más detalle.
Los espacios sobrantes alrededor de los campos, las filas vacías en medio del archivo y las comillas usadas de forma inconsistente causan la mayoría de los problemas de CSV, mucho antes de que importe el delimitador. Limpia primero el archivo con el Limpiador de CSV y luego conviértelo.
Traducido del Original en inglés con ayuda de IA.
Comentarios
Aún no hay comentarios. Sé el primero.


