Konversi JSON ke CSV
Atau tempel teks subtitle
Apa yang berubah dalam konversi ini
3 hal dihapus atau memerlukan keputusan
- Pemformatan
seluruh pemformatan (tebal, miring, warna, garis tepi, bayangan)
- Posisi
posisi di layar (setiap cue kembali ke posisi bawaan)
- Karaoke
timing karaoke (penyorotan per suku kata)
Daftar ini berasal dari matriks kemampuan untuk kedua format ini, bukan dari file tertentu yang Anda muat. File tertentu bisa kehilangan lebih banyak jika memakai fitur yang diizinkan format tetapi tidak dimodelkan matriks.
Halaman ini mengubah JSON menjadi CSV. File bisa diseret ke jendela ini atau teksnya ditempel; hasilnya adalah versi CSV. Semua proses berjalan di peramban, tanpa unggahan dan tanpa akun.
JSON dan CSV menyimpan hal yang berbeda, dan selisihnya nyata: gaya, posisi, dan karaoke tidak punya tempat di CSV. Dokumen JSON di sini adalah model field: setiap cue punya `id`, `start`, dan `end` dalam milidetik, `lines` membawa `tags`, dan objek `styles` menyimpan tabel gaya. CSV menyimpan satu baris per cue; teks yang memuat koma atau baris baru dikutip sesuai aturan CSV. Daftar di atas dihitung dari kemampuan kedua format, bukan dari isi file Anda, sehingga hasilnya tidak berubah sebelum file dimuat.
Anda bisa memasukkan satu file atau satu musim penuh; antrean bekerja berurutan, dan semua hasil turun bersama dalam satu ZIP.
Contoh
File JSON umum, dikonversi ke CSV
Masukan
{
"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"
}
]
}
Keluaran
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.
Yang hilang pada keluaran ini: gaya, posisi, dan karaoke. Sisanya cocok baris demi baris.
Konversi yang sama pada input berantakan
Masukan
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
Keluaran
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.
Inilah jenis kerusakan yang ada pada file nyata — byte-order mark, koma yang hilang, nilai null, atau waktu yang tidak terbaca. Bandingkan dengan contoh rapi di atas untuk melihat apa yang dimaafkan parser.
Pertanyaan yang sering diajukan
Apakah tebal dan miring bertahan dari JSON ke CSV?
Penekanan bertahan; tabel gaya tidak. Pemformatan yang melekat pada sepotong teks — tebal, miring, garis bawah, warna — ditulis ke teks CSV sebagai tag (`<i>`, `<b>`, `<u>`, `<font color="…">`), karena itulah satu-satunya jenis gaya yang masih bisa dibawa format tingkat cue. Yang hilang adalah semua yang dikatakan file JSON secara global: font, ukurannya, garis tepi, bayangan, dan margin.
Apa yang terjadi pada posisi di layar dari JSON ke CSV?
CSV tidak dapat menyatakan di mana subtitle digambar, jadi rujukan posisi yang dibawa setiap cue dibuang saat keluar dari JSON, dan setiap cue kembali ke posisi bawaan yang dipilih pemutar — umumnya bagian bawah bingkai dan di tengah.
Apa yang terjadi pada timing karaoke dari JSON ke CSV?
Timingnya hilang; kata-katanya tetap. Karaoke hidup di span karaoke yang dibawa cue JSON, yang menandai kapan setiap suku kata menyala, dan CSV tidak punya cara mencatat momen di dalam satu baris — jadi tandanya dilepas dan suku katanya tiba sebagai teks CSV biasa.
Seperti apa keluarannya ketika JSON menjadi CSV?
Keluaran CSV disusun seperti CSV — baris header (`start,end,text`) lalu satu baris per cue. Cue yang di JSON ditulis `4126` menjadi cue yang di CSV ditulis `00:00:04.126`, dalam urutan yang sama, dan tidak ada teks yang berubah.
Apakah timing JSON akurat di file CSV?
Ya, hingga milidetik — serinci yang bisa dicapai kedua format. JSON menulis satu momen sebagai `4126` dan CSV menulis momen yang sama sebagai `00:00:04.126`; tidak ada yang dibulatkan atau digeser di antara keduanya, dan cue yang tampil selama 2,9 detik tetap begitu.
Bagaimana cue JSON dua baris keluar di CSV?
Dua baris JSON menjadi dua baris di dalam satu sel teks, dikutip sesuai aturan CSV. Pasangannya bertahan — keduanya tetap menjadi satu subtitle di keluaran CSV, dan pemutar menampilkannya bersama.
Apakah cue JSON mempertahankan urutannya di keluaran CSV?
Ya. Cue keluar dalam urutan waktu mulai, paling awal dulu, karena semua format di sini mengharapkan urutan itu dan pemutar membacanya begitu. File JSON yang cue-nya tidak berurutan akan dirapikan di keluaran CSV; itu perubahan struktur yang disengaja, bukan perubahan isi.
Bisakah CSV dikonversi balik ke JSON?
Ya, dan arah itu punya daftarnya sendiri: mengonversi CSV ke JSON menghilangkan gaya, posisi, dan karaoke. Daftar itu berbeda dari daftar di atas karena kedua format menyimpan hal yang berbeda.
Apakah keluaran CSV mempertahankan encoding file JSON?
Tidak — keluarannya UTF-8, dengan akhir baris Unix dan tanpa byte-order mark, apa pun yang dipakai file JSON. File yang datang dalam UTF-16 atau encoding satu-byte Windows didekode saat masuk (panel hasil memberi tahu bila itu terjadi); yang keluar selalu CSV UTF-8 yang sama.