Saltar al contenido principal

JSON a tabla Markdown

Este convertidor renderiza un array JSON de objetos como una tabla Markdown con sabor a GitHub en tu navegador. Las columnas son la unión ordenada de las claves de cada objeto, los pipes se escapan como \|, los saltos de línea se convierten en <br>, y la fila separadora coincide con tu encabezado — así la salida se pega directamente en cualquier renderizador de Markdown.

Solo local

JSON a tabla Markdown: explicación

La documentación se ejecuta en tablas Markdown — listas de características de README, entradas de changelog, secciones de comparación en un pull request — y los datos detrás de ellas suelen empezar como JSON: una respuesta de API, un informe de pruebas, una exportación. Escribir la tabla a mano es donde entran los errores, porque las tablas Markdown tienen reglas que es fácil conocer a medias: una fila por línea, celdas separadas por pipes, y una fila separadora que decide si las columnas existen realmente.

Este convertidor hace la escritura por ti, siguiendo las reglas de Markdown con sabor a GitHub. La fila de encabezado es la unión ordenada de las claves de cada objeto, en orden de primera aparición, así que una clave que aparece a partir del segundo registro sigue teniendo su columna. Un pipe dentro de un valor se escapa como \| para que no pueda dividir una celda, un salto de línea dentro de un valor se convierte en <br> para que no pueda dividir una fila, y los objetos o arrays anidados dentro de un registro se renderizan como texto JSON compacto para que no desaparezca nada.

Como en todas las páginas de este sitio, la conversión ocurre enteramente en tu navegador. El JSON se parsea con JSON.parse propio del navegador, el Markdown se construye en la pestaña y no se envía nada a ningún sitio — el panel Network de DevTools permanece silencioso en cada conversión, y la Content-Security-Policy de la página bloquea las peticiones salientes, sin excepciones.

La conversión es útil en ambos sentidos — una tabla mantenida en una wiki puede volver a ser datos — y la Convertidor de Markdown a JSON página parsea la sintaxis de tablas de GitHub de vuelta a registros.

Si el destino es una hoja de cálculo en vez de documentación, el Convertidor de JSON a CSV produce filas RFC 4180 a partir de los mismos registros.

Cómo funciona la conversión en realidad

El motor parsea tu JSON con JSON.parse y requiere que el nivel superior sea un array de objetos — la única forma que significa filas. Luego recorre los registros una vez, recolectando claves en una unión ordenada: las claves del primer registro abren la tabla, y una clave vista por primera vez en un registro posterior se añade a la derecha en lugar de desplazar el orden de columnas que ya tienes. Los registros que carecen de una clave simplemente dejan esa celda vacía. Nada del resultado depende de herramientas que no tengas: la tabla es texto plano, así que sobrevive al copiar-pegar, a la revisión de código y a las compilaciones de sitios estáticos. Luego se escribe la tabla, una regla por cada problema:

  • Encabezado: una fila con las claves de la unión, luego una fila separadora de tres rayas por columna — la línea que hace que el bloque sea una tabla en todo renderizador con sabor a GitHub.
  • Pipes: un | dentro de un valor se emite como \|, el escape que define GFM, así que un valor como a|b permanece como una sola celda.
  • Saltos de línea: un \n dentro de un valor se convierte en <br>, porque un salto de línea real terminaría la fila y corrompería todo lo que hay debajo.
  • Valores anidados: un objeto o array dentro de un registro se renderiza como texto JSON compacto en su celda, así que los datos anidados son visibles en vez de ser eliminados silenciosamente.

Qué aspecto tiene la salida

El ejemplo de abajo es el par exacto que produce el botón Cargar muestra del convertidor: dos personas, donde el valor notes del primer registro contiene un pipe y el del segundo contiene un salto de línea. El pipe escapado se renderiza como un | literal dentro de su celda, el salto de línea se renderiza como un salto de línea bajo <br>, y ambas filas mantienen sus tres columnas. Las filas están envueltas en pipes iniciales y finales, que es la forma que más fiablemente leen todos los renderizadores y herramientas de diff.

Pega la salida en cualquier renderizador con sabor a GitHub y la vista previa que ves allí es lo que los lectores obtienen. La tabla también es estable bajo diff por una razón sencilla: el orden de las columnas depende del orden del documento en vez de de una ordenación, así que un registro que gana una clave añade una columna en vez de reordenar las que tus lectores ya conocen.

Las reglas de celda a vistazos

Cada problema que puede contener una celda de tabla, y su forma emitida:

Contenido de celdaSe emite comoPor qué
a|ba\|bUn pipe crudo dividiría la celda
línea uno\nlínea doslínea uno<br>línea dosUn salto de línea crudo terminaría la fila
{"x": 1}Texto JSON compactoLos valores anidados se muestran, no se eliminan
truetrueLos booleanos se renderizan tal cual
(falta clave)(celda vacía)Los registros irregulares se mantienen alineados

Entradas que este convertidor rechaza

Dos formas no tienen tabla fiel y son rechazadas con un mensaje específico en vez de ser forzadas:

  • Un nivel superior que no es un array — un único objeto es una fila sin tabla que unir, y envolverlo en un array sintético inventaría estructura que no escribiste.
  • Un array cuyos elementos no son todos objetos — una lista de escalares no tiene claves, así que no hay nada que pueda ser encabezado de columna; el convertidor nombra el índice ofensivo.

Preguntas frecuentes

¿Se envía algún dato a un servidor cuando convierto JSON a Markdown?

No. El parseo y la renderización se ejecutan en esta pestaña del navegador con JavaScript local a la página. No hay un endpoint de subida, y la Content-Security-Policy prohíbe las conexiones salientes. Puedes confirmar ambas cosas en DevTools: abre el panel Network, convierte un documento y observa que no se realiza ninguna petición en ningún momento.

¿Para qué dialecto de Markdown está escrita la salida?

Para Markdown con sabor a GitHub, la sintaxis de tablas usada por GitHub, GitLab y la mayoría de herramientas de documentación. La firma es la fila separadora de rayas bajo el encabezado — este convertidor emite tres rayas por columna sin dos puntos de alineación, así que las celdas quedan alineadas a la izquierda por defecto — y las filas llevan pipes iniciales y finales para la máxima compatibilidad con renderizadores.

¿Por qué un pipe dentro de mi valor necesita escapado?

Porque el pipe es el delimitador de celda: un | crudo se leería como el final de una celda y el inicio de otra, desplazando silenciosamente cada celda que le sigue. El escape de GFM es el par pipe-barra invertida \|, que se renderiza como un pipe literal dentro de la celda. El convertidor lo aplica a cada valor, así que un fragmento de código como a|b llega a la tabla tal como empezó.

¿Por qué los saltos de línea en valores se convierten en <br> y no en saltos de línea reales?

Porque una fila de tabla Markdown es, por definición, una sola línea — un salto de línea crudo dentro de una celda termina la fila, y el renderizador trata el resto como un nuevo párrafo, corrompiendo la tabla. La etiqueta HTML <br> se renderiza como un salto de línea dentro de la celda, que es la convención que GitHub documenta para el contenido multilínea de celdas.

¿Cómo se decide el orden de las columnas?

Por la unión de las claves de cada registro en orden de primera aparición: las claves del primer registro establecen las columnas iniciales, y cualquier clave que aparezca después se añade a la derecha. Los registros que faltan una clave dejan esa celda vacía. El orden es estable — el orden del documento, no alfabético — porque un convertidor que reordenara tus columnas haría cada diff posterior de la salida ruidoso.

¿Qué ocurre con los objetos y arrays anidados en un registro?

Se renderizan como texto JSON compacto dentro de su celda, así que la información permanece visible en vez de ser eliminada o aplanada hasta no ser reconocible. Si la estructura an importa para procesos posteriores — filtrado, ordenación, gráficos — aplánala primero con el convertidor JSON a CSV, que convierte rutas anidadas en columnas; para lectura y revisión, la celda de texto JSON suele ser exactamente suficiente.