Saltar al contenido principal
SubtitleMatrix

Convertir JSON a CSV

O pega el texto de los subtítulos

Qué cambia esta conversión

3 cosas se descartan o requieren una decisión

  • Estilo

    todo el estilo (negrita, cursiva, color, contorno, sombra)

  • Posición

    la posición en pantalla (cada bloque vuelve a la posición predeterminada)

  • Karaoke

    la sincronización karaoke (resaltado por sílaba)

Esta lista proviene de la matriz de capacidades de estos dos formatos, no del archivo concreto que has cargado. Un archivo específico puede perder más si usa características que el formato permite pero que la matriz no modela.

Esta página convierte JSON en CSV. Arrastra un archivo —o pega el texto— y obtienes la versión CSV. La conversión se ejecuta entera dentro del navegador: no se sube nada y no se pide cuenta.

Los dos formatos no guardan lo mismo, y la diferencia no es cosmética: el estilo, la posición y el karaoke no tienen dónde ir en CSV. La lista de arriba procede de lo que cada formato puede expresar, no de tu archivo, así que no cambia al cargar otro.

Un archivo vale, y una temporada completa también: la cola los recorre en orden y los resultados llegan juntos como un único ZIP.

Ejemplos

Un archivo JSON típico, convertido a CSV

Entrada

{
  "version": 1,
  "title": "Fixture: typical",
  "fps": 25,
  "styles": {
    "Default": {
      "name": "Default",
      "fontFamily": "Arial",
      "fontSize": 20,
      "primaryColor": "#FFFFFF",
      "bold": false,
      "italic": false
    }
  },
  "generator": "subtitlematrix fixtures",
  "cues": [
    {
      "id": "1",
      "start": 0,
      "end": 2000,
      "lines": [
        "Hello world.",
        "Second line."
      ],
      "style": "Default",
      "position": {
        "x": 100,
        "y": 200,
        "align": "center"
      }
    },
    {
      "id": "2",
      "start": 2500,
      "end": 4000,
      "lines": [
        "Plain line.",
        {
          "text": "Styled line.",
          "tags": [
            {
              "kind": "italic",
              "start": 0,
              "end": 6
            }
          ]
        }
      ]
    },
    {
      "id": "3",
      "start": 4500,
      "end": 6000,
      "lines": [
        "Roger: I am here."
      ],
      "speaker": "Roger"
    }
  ]
}

Resultado

start,end,text
00:00:00.000,00:00:02.000,"Hello world.
Second line."
00:00:02.500,00:00:04.000,"Plain line.
<i>Styled</i> line."
00:00:04.500,00:00:06.000,Roger: I am here.

Se pierden el estilo, la posición y el karaoke. El resto coincide línea por línea.

La misma conversión con una entrada difícil

Entrada

[
    { "start": 0, "end": 1000, "lines": ["First."] },
    { "start": 1000, "end": 2000, "text": "Second." },
    "not an object",
    { "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]

Resultado

start,end,text
00:00:00.000,00:00:01.000,First.
00:00:01.000,00:00:02.000,Second.
00:00:02.000,00:00:03.000,Third.

Estos son los daños que traen los archivos reales: finales de línea mezclados, espacios sueltos, campos vacíos. Compáralo con el ejemplo limpio de arriba para ver qué perdona el analizador.

Preguntas frecuentes

¿Sobreviven la negrita y la cursiva al pasar de JSON a CSV?

El énfasis sí; la tabla de estilos no. El formato que pertenece a un fragmento de texto —negrita, cursiva, subrayado, un color— se escribe en el texto CSV como etiquetas (`<i>`, `<b>`, `<u>`, `<font color="…">`), porque es el único tipo de estilo que un formato por bloques puede llevar. Se pierde todo lo que el archivo JSON decía globalmente: la fuente, su tamaño, el contorno, la sombra y los márgenes.

¿Qué sucede con la posición en pantalla al convertir JSON a CSV?

CSV no puede decir dónde se dibuja un subtítulo, así que la posición guardada con cada bloque se descarta al salir de JSON, y cada bloque vuelve a la posición predeterminada que elige el reproductor: el borde inferior del fotograma, centrado, casi siempre.

¿Qué ocurre con los tiempos de karaoke al pasar JSON a CSV?

El tiempo se va; las palabras quedan. El karaoke vive en los tramos de karaoke que lleva un bloque JSON, que marcan cuándo se ilumina cada sílaba, y CSV no tiene forma de registrar un instante dentro de una línea, así que las marcas desaparecen y las sílabas llegan como texto normal de CSV.

¿Qué aspecto tiene la salida cuando JSON se convierte en CSV?

Como CSV: una fila de cabecera (`start,end,text`) y después una fila por bloque. Cada bloque JSON se convierte en un bloque CSV, en el mismo orden y con el mismo texto.

¿Son exactos los tiempos JSON en el archivo CSV?

Sí, al milisegundo, que es lo más fino que llega cualquiera de los dos formatos. JSON escribe un instante como `4126` y CSV escribe el mismo instante como `00:00:04.126`; nada se redondea ni se desplaza, y un bloque que estaba en pantalla 2,9 segundos sigue estándolo.

¿Cómo sale en CSV un bloque JSON de dos líneas?

Como dos líneas dentro de la única celda de texto, entrecomilladas como exige CSV. La pareja se mantiene: las dos líneas JSON siguen perteneciendo a un mismo subtítulo en la salida CSV, y el reproductor las muestra juntas.

¿Mantienen los bloques JSON su orden en la salida CSV?

Sí, y de paso se ordenan por hora de inicio: primero los más tempranos, que es lo que esperan todos los formatos de este sitio y cómo los leen los reproductores. Si tu archivo JSON traía los bloques desordenados, la salida CSV los devuelve a su orden; eso cambia la estructura del archivo, no su contenido, y es deliberado.

¿Puedo convertir el CSV de vuelta a JSON?

Sí, y esa dirección no cuesta nada: un archivo CSV guarda menos de lo que JSON puede, así que no se pierde nada más al volver. Lo que esta dirección perdió sigue perdido: el estilo, la posición y el karaoke no se reconstruyen desde un archivo CSV, porque nada en él registra cómo eran.

¿Conserva la salida CSV la codificación del archivo JSON?

No: la salida es UTF-8, con finales de línea Unix y sin marca de orden de bytes, sea cual sea la que usara el archivo JSON. Un archivo que llega en UTF-16 o en una codificación Windows de un solo byte se decodifica a la entrada (el panel de resultados lo indica cuando ocurre); lo que sale es siempre el mismo CSV en UTF-8.

Herramientas relacionadas