Konwerter napisów CSV na JSON
Albo wklej tekst napisów
Co zmienia ta konwersja
W tym kierunku nic nie ginie — każda cecha formatu źródłowego ma gdzie trafić w formacie docelowym.
Ta lista pochodzi z macierzy możliwości tych dwóch formatów, a nie z konkretnego wczytanego pliku. Konkretny plik może stracić więcej, jeśli używa cech, które format dopuszcza, ale macierz ich nie modeluje.
Ta strona zamienia CSV na JSON. Upuść plik — albo wklej tekst — a dostaniesz wersję JSON. Konwersja odbywa się w całości w Twojej przeglądarce, więc nic nie jest wysyłane i konto nie jest potrzebne.
W tym kierunku nic nie ginie. Wszystko, co wyraża CSV, wyraża też JSON, więc wynik to te same napisy w innym opakowaniu — oś czasu, podział wierszy i tekst zostają. Znaczniki czasu zmieniają tylko postać: CSV zapisuje 00:00:04.126, a JSON liczbę 4126 oznaczającą milisekundy.
Jeden plik wystarczy, cały sezon też: kolejka przetwarza je po kolei, a wyniki pobierasz razem jako jeden ZIP.
Przykłady
Typowy plik CSV zamieniony na JSON
Wejście
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."
Wynik
{
"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."
]
}
]
}
Nic tu nie ginie: porównaj obie strony wiersz po wierszu.
Ta sama konwersja na niewygodnym wejściu
Wejście
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.
Wynik
{
"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."
]
}
]
}
Tak wyglądają prawdziwe tabele: nagłówek z innymi nazwami, znacznik czasu bez cudzysłowów, pusta komórka. Porównaj z czystym przykładem powyżej, żeby zobaczyć, co parser wybacza.
Częste pytania
Jak wygląda wynik, gdy CSV staje się JSON?
Jak JSON: tablica obiektów bloków, każdy z polami start i end w milisekundach oraz tablicą lines. Kolumna id trafia do pola id, a pozostałe nierozpoznane kolumny nie są przenoszone. Każdy blok CSV staje się jednym blokiem JSON, w tej samej kolejności i z tym samym tekstem.
Czy czasy z CSV są w JSON dokładne?
Tak, co do milisekundy — a drobniej nie zapisuje ani CSV, ani JSON. CSV pisze chwilę jako 00:00:04.126, a JSON jako 4126; między nimi nic nie jest zaokrąglane ani przesuwane, więc blok widoczny przez 2,9 sekundy nadal tyle trwa.
Co dzieje się z dwuwierszowym blokiem CSV w JSON?
Staje się dwoma wpisami w tablicy lines tego bloku. Więź zostaje — oba wiersze z komórki CSV nadal tworzą jeden blok w wyniku JSON i odtwarzacz pokazuje je razem.
Czy w CSV na JSON bloki zachowują kolejność?
Tak, a po drodze są sortowane po czasie startu — najwcześniejsze pierwsze, tak jak oczekuje każdy format na tej stronie i jak czytają je odtwarzacze. Jeśli Twój plik CSV miał bloki w innej kolejności, wynik JSON je uporządkuje; to zmiana struktury pliku, nie treści, i jest zamierzona.
Czy mogę przekonwertować JSON z powrotem na CSV?
Tak, ale to kierunek stratny: stylizacja, pozycjonowanie i karaoke nie mają w CSV gdzie trafić. W tę stronę nic nie ginie, więc ten koszt pojawia się dopiero przy powrocie.
Czy wynik JSON zachowa kodowanie pliku CSV?
Nie — wynik jest w UTF-8, z uniksowymi końcami wierszy i bez BOM, niezależnie od tego, czego używał plik CSV. Plik w UTF-16 albo w windowsowym kodowaniu jednobajtowym jest dekodowany przy wejściu (panel wyniku to sygnalizuje), a na wyjściu zawsze dostajesz ten sam JSON w UTF-8.