Ir para o conteúdo principal
SubtitleMatrix

Converter CSV para JSON

Ou cole o texto da legenda

O que esta conversão altera

Nada se perde nesta direção — cada recurso do formato de origem tem para onde ir no formato de destino.

Esta lista vem da matriz de capacidades destes dois formatos, não do arquivo específico que você carregou. Um arquivo específico pode perder mais se usar recursos que o formato permite mas a matriz não modela.

Esta página converte CSV em JSON. Arraste um arquivo — ou cole o texto — e receba a versão JSON de volta. A conversão roda inteiramente no seu navegador, então nada é enviado e nenhuma conta é necessária.

Nada se perde nesta direção. Tudo o que o CSV consegue expressar tem equivalente no JSON, então a saída são as mesmas legendas num invólucro diferente — a linha do tempo, as quebras de linha e o texto sobrevivem. Isso vale para qualquer arquivo CSV, inclusive um que use todos os recursos que o formato permite.

Um arquivo está bom, e uma temporada inteira também: a fila processa na ordem e os resultados descem juntos num único ZIP.

Exemplos

Um arquivo CSV típico, convertido para JSON

Entrada

start,end,text
00:00:01.000,00:00:03.500,The quick brown fox.
00:00:04.000,00:00:06.250,"Jumps over, the lazy dog."
00:00:07.000,00:00:09.000,"Two lines here.
And a second one."

Saída

{
  "version": 1,
  "cues": [
    {
      "start": 1000,
      "end": 3500,
      "lines": [
        "The quick brown fox."
      ]
    },
    {
      "start": 4000,
      "end": 6250,
      "lines": [
        "Jumps over, the lazy dog."
      ]
    },
    {
      "start": 7000,
      "end": 9000,
      "lines": [
        "Two lines here.",
        "And a second one."
      ]
    }
  ]
}

Nada é perdido aqui: compare os dois lados linha a linha.

A mesma conversão sobre uma entrada problemática

Entrada

id,start,end,note,text
1,00:00:01,000,00:00:04,000,cue one,"Hello there, friend."
2,00:00:05.000,00:00:07.000,cue two,Second line.
bad,notatime,00:00:09.000,cue three,Unreadable start.
4,00:00:10.000,00:00:09.000,cue four,End before start.
5,00:00:12.000,00:00:14.000,cue five,Unquoted comma in text, right here.

Saída

{
  "version": 1,
  "cues": [
    {
      "id": "1",
      "start": 1000,
      "end": 4000,
      "lines": [
        "Hello there, friend."
      ]
    },
    {
      "id": "2",
      "start": 5000,
      "end": 7000,
      "lines": [
        "Second line."
      ]
    },
    {
      "id": "4",
      "start": 10000,
      "end": 10001,
      "lines": [
        "End before start."
      ]
    },
    {
      "id": "5",
      "start": 12000,
      "end": 14000,
      "lines": [
        "Unquoted comma in text, right here."
      ]
    }
  ]
}

É o tipo de dano que os arquivos reais têm: fim de linha misturado, espaço sobrando, campos vazios. Compare com o exemplo organizado acima para ver o que o analisador perdoa.

Perguntas frequentes

Como é o arquivo JSON gerado a partir de um CSV?

Um objeto que abre com version e traz um array cues; dentro dele, um objeto por fala, com start e end em milissegundos e um array lines só com os textos, uma string por linha. Quando o CSV tinha uma coluna id, o valor dela é copiado para o objeto da fala; sem essa coluna, o campo simplesmente não aparece, como no primeiro exemplo.

Os tempos do CSV ficam exatos no JSON?

Ficam exatos ao milissegundo, que é o limite dos dois formatos. O CSV escreve 00:00:04.126 e o JSON grava o inteiro 4126; na volta, a mesma fala recebe de novo o mesmo timecode, porque o JSON não arredonda para baixo nem para o quadro mais próximo.

Como sai no JSON uma fala CSV de duas linhas?

Sai como duas strings dentro do array lines, cada uma com seu próprio texto. O vínculo se mantém: as duas linhas do CSV continuam pertencendo a um único objeto em cues, e o player as exibe na mesma fala.

A ordem das falas CSV se mantém no JSON?

Se mantém, com as falas ordenadas pelo início no caminho, do mais cedo para o mais tarde, que é como os players leem. Se o seu CSV listava as falas fora de ordem, o JSON as devolve em ordem; a mudança é de estrutura, não de conteúdo, e é proposital.

Consigo converter o JSON de volta para CSV?

Consigo, e essa é a direção com perdas: o JSON pode carregar estilo e posicionamento que o CSV não tem onde guardar, então esses campos somem. Nesta direção nada se perde, então esse custo só aparece se você voltar.

O JSON de saída mantém a codificação do arquivo CSV?

Não: o JSON gerado é UTF-8, com fim de linha Unix e sem BOM, qualquer que tenha sido a codificação do CSV. Um arquivo que chega em UTF-16 ou numa codificação de byte único do Windows é decodificado na leitura, e o painel de resultado avisa quando isso acontece.

Ferramentas relacionadas