← Volver a la herramienta JSON

CSV a JSON

Última actualización: 1 de octubre de 2026

Lee una tabla CSV y devuélvela como array de objetos JSON. La fila de encabezado da las claves, al leer se entienden las reglas de comillas de RFC 4180 y la detección de tipos la activas tú. Todo ocurre en tu navegador: la tabla no sale de la máquina.

Se ejecuta en tu navegador Sin subir nada Según RFC 4180 Ceros iniciales a salvo Código abierto (MIT)

Qué hace la conversión

CSV lleva los nombres de columna en la primera línea, así que la conversión es un mapeo directo: las celdas del encabezado se convierten en nombres de propiedad y cada línea siguiente se convierte en un objeto del array. La tabla

id,name
1,Ada
2,Grace

se convierte en [{"id":"1","name":"Ada"},{"id":"2","name":"Grace"}]. Fíjate en que los valores son cadenas: es el comportamiento por defecto y el motivo se explica en la sección siguiente.

La fila de encabezado es el esquema

La primera línea se toma como encabezado, no como datos. Dos casos límite se resuelven en vez de dejarlos a la sorpresa:

La detección de tipos está desactivada por defecto, a propósito

CSV no tiene tipos. Cada celda es texto y el archivo no puede distinguir un número de un código que resulta ser de dígitos. Por eso la detección es opcional: desactivada, todos los valores siguen siendo cadenas, que es la lectura fiel del archivo.

Al activarla solo se convierte lo inequívoco. Un valor se trata como número cuando podría escribirse como un número JSON —un signo menos opcional, dígitos, una parte decimal opcional y un exponente opcional—, y true, false y null se reconocen como tales. Lo esencial es que un valor con cero inicial no se convierte, porque 007 y 02139 casi siempre son identificadores: códigos postales, teléfonos, números de cuenta, referencias de producto. Un «conviértelo todo a número» a lo bruto transformaría 007 en 7 y corrompería los datos; esta regla no lo hace.

Campos entrecomillados, comas internas y saltos de línea

La lectura sigue RFC 4180, la misma regla con la que escribe la página de JSON a CSV. Un campo entre comillas dobles puede contener el delimitador, un salto de línea o un par de comillas dobles que se lee como una sola. Así, "Ada, Countess" es un único valor que contiene una coma, y un valor que ocupa dos líneas físicas sigue siendo una celda. Se aceptan tanto CRLF como LF, y una marca de orden de bytes UTF-8 inicial——el U+FEFF invisible que añaden Excel y algunos exportadores——se elimina, para que el primer nombre de columna no salga como id.

Filas de longitud desigual

Los archivos editados a mano rara vez son un rectángulo limpio. Una fila con menos campos que el encabezado se rellena con valores vacíos y una con más se recorta, de modo que todos los objetos acaban con las mismas claves. La alternativa —rechazar el archivo entero— es menos útil que devolver las filas bien formadas, pero implica que los valores que faltan no están realmente.

Preguntas frecuentes

¿Cómo se corresponden CSV y los objetos JSON?

La primera fila se lee como encabezado y sus celdas se convierten en nombres de propiedad; cada fila siguiente se convierte en un objeto del array, con esos nombres como claves. Un CSV con el encabezado id,name y una fila 1,Ada produce [{ "id": "1", "name": "Ada" }].

¿Por qué mis números y booleanos salen como cadenas?

La detección de tipos está desactivada por defecto, y es deliberado. CSV no tiene tipos, así que el conversor no puede saber si 007 es el número siete o el código cero-cero-siete; una suposición equivocada corrompe en silencio identificadores como códigos postales, teléfonos y números de cuenta. Actívala cuando sepas que una columna es numérica y, aun así, un valor con cero inicial sigue siendo cadena.

¿Qué cuenta exactamente como número cuando la detección está activada?

Solo el texto que podría escribirse como un número JSON: un signo menos opcional, dígitos sin cero inicial salvo que el valor sea exactamente 0, una parte decimal opcional y un exponente opcional. true, false y null también se reconocen. Todo lo demás, incluidos 007 y 1,234, sigue siendo cadena.

¿Cómo se leen los campos entrecomillados, las comas internas y los saltos de línea?

El análisis sigue RFC 4180: un campo entre comillas dobles puede contener el delimitador, un salto de línea o una comilla doble duplicada, que se lee de vuelta como una sola. Así, una celda con Ada, Countess se escribe "Ada, Countess" y un valor en dos líneas sigue siendo un solo campo. Se aceptan tanto CRLF como LF.

Mi archivo tiene un BOM UTF-8, ¿se romperá el primer nombre de columna?

No. La marca de orden de bytes inicial——el U+FEFF invisible que algunas herramientas, Excel entre ellas, ponen al inicio de un CSV——se elimina antes de analizar, pues de lo contrario el primer encabezado se leería como id. Aquí se lee como id.

¿Qué pasa con las filas que no coinciden con el encabezado?

Una fila con menos campos que el encabezado se rellena con valores vacíos, y una con más se recorta, de modo que todos los objetos tienen las mismas claves. Las filas irregulares son habituales en archivos editados a mano y se toleran en lugar de rechazarse, pero los datos que faltan no aparecen realmente en la salida.

¿Quieres la dirección contraria? JSON a CSV escribe un array de objetos como tabla. ¿Has encontrado un fallo? Escríbenos.