Aller au contenu principal
SubtitleMatrix

Convertir CSV en JSON

Ou collez le texte d'un sous-titre

Ce que cette conversion change

Rien n'est perdu dans ce sens — chaque fonctionnalité du format source a un équivalent dans le format cible.

Ce rapport de pertes vient de la matrice de capacités de ces deux formats, pas du fichier particulier que vous avez chargé. Un fichier précis peut perdre davantage s'il utilise des fonctionnalités que le format autorise mais que la matrice ne modélise pas.

Cette page convertit un tableau CSV en document JSON. Chaque ligne devient un bloc de ce site, avec `id`, `start` et `end` en millisecondes entières, un tableau `lines` et un `style` qui rejoue le `styleRef` quand un style est nommé. L’en-tête donne le rôle des colonnes ; sans en-tête, elles sont lues dans l’ordre `start`, `end`, `text`.

Cette direction ne retire rien : le CSV contient déjà moins que ce que le JSON sait décrire, et tout ce qu’il porte — début, fin, texte, lignes multiples — trouve une place dans le document. La liste ci-dessus est vide, et ce n’est pas un oubli.

Un fichier ou une saison : la file les enchaîne et les résultats descendent dans un ZIP. Tout reste dans le navigateur.

Exemples

Un fichier CSV typique, converti en JSON

Entrée

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."

Sortie

{
  "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."
      ]
    }
  ]
}

Rien n’est perdu ici : les deux côtés se comparent ligne pour ligne, et les heures gardent leur milliseconde.

La même conversion sur une entrée abîmée

Entrée

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.

Sortie

{
  "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."
      ]
    }
  ]
}

C’est le genre de dégâts des vrais fichiers : fins de ligne mélangées, espaces parasites, champs vides. Comparez avec l’exemple propre ci-dessus pour voir ce que le lecteur pardonne.

Questions fréquentes

Quelle structure JSON obtient-on depuis un tableau CSV ?

À un document de ce site : version, table `styles`, tableau `cues`. Chaque entrée porte `id`, `start`, `end` et `lines`, avec des bornes entières en millisecondes : `00:00:04.126` devient `4126`. Le champ `style` renvoie à la table `styles`, comme le `styleRef` interne.

Les heures d’un CSV sont-elles exactes dans le JSON ?

Oui, à la milliseconde : les deux formats descendent à la même unité. `00:00:04.126` devient `4126` sans arrondi, et une durée de 2,9 s reste 2,9 s.

Une cellule CSV de plusieurs lignes sort-elle groupée en JSON ?

En plusieurs entrées du tableau `lines`, une par ligne de la cellule. Le regroupement est conservé : le lecteur affiche les lignes ensemble.

Que deviennent les colonnes inconnues d’un CSV dans le JSON ?

Elles sont lues et gardées, pas jetées : une colonne `note` ou une colonne sans rôle reste attachée au bloc correspondant. C’est pourquoi cette direction figure sans perte.

Puis-je revenir d’un JSON vers le CSV d’origine ?

Oui, et c’est la direction avec perte : styles, position et karaoké n’ont pas de colonne dans un tableau. Ce sens-ci ne retire rien ; le coût n’apparaît qu’au retour.

Outils associés