Batas Konversi JSON ↔ YAML dan XML
Klaim bahwa JSON adalah subset YAML hanya menjamin satu arah, dan XML tidak memiliki pemetaan JSON resmi sama sekali — semuanya bersandar pada konvensi.
Konversi antara JSON dan YAML, XML, CSV, TypeScript, Java, Go, serta SQL tidak pernah tanpa kehilangan. Yang penting adalah menyatakan dengan jelas di mana kehilangan itu terjadi.
8 artikelKlaim bahwa JSON adalah subset YAML hanya menjamin satu arah, dan XML tidak memiliki pemetaan JSON resmi sama sekali — semuanya bersandar pada konvensi.
CSV bersifat dua dimensi, JSON berbentuk pohon. Bagian tersulit dari konversi bukanlah kode — melainkan memutuskan di awal bagaimana array diratakan dan bagaimana tipe dipertahankan.
Struktur bersarang, field yang tidak konsisten, dan array dari array adalah titik di mana konversi JSON ke spreadsheet rusak. Empat pendekatan diurutkan berdasarkan waktu hingga hasil, masing-masing dengan trade-off.
Mengubah JSON menjadi SQL INSERT menyembunyikan pemecahan tabel bersarang, NULL versus field hilang, escaping, dan perbedaan dialek. Pernyataan yang dapat dijalankan dan tabel perbandingan untuk setiap jebakan.
Menghasilkan interface dari sampel JSON hanyalah separuh pekerjaan: field opsional, null, union, tanggal, dan integer besar memerlukan tinjauan manusia, dan tipe tidak melakukan validasi runtime.
Perintah yang paling sering disalin dari tutorial, yq -P input.json > output.yaml, pada yq v4 tetap mengeluarkan JSON. Artikel ini mengukur yq v4.44.6, PyYAML 6.0.3, dan js-yaml pada sampel 2.39 MB, menjelaskan mengapa ekstensi input menentukan format output, lalu memberi resep yang benar untuk konversi batch, tanda kutip, indentasi, dan presisi bilangan bulat besar.
Sembilan eksperimen pada konverter nyata: strategi "kunci dari baris pertama" kehilangan kolom secara diam-diam, null, ketiadaan, dan string kosong semuanya menjadi sel kosong, bilangan bulat 20 digit kehilangan presisi sejak JSON.parse, dan titik dalam kunci membuat dua jalur berbeda bertabrakan di kolom yang sama. Bagaimana header dibangun, nilai mana yang terdistorsi, dan bagaimana memilih strategi sesuai penggunaan di hilir.
Tinjauan praktis tentang apa yang generator JSON-to-Java benar-benar keluarkan — angka menjadi Double, objek bersarang menjadi static inner class, dan tidak satu pun anotasi Jackson dihasilkan. Presisi uang, penggantian nama field, type erasure, field tak dikenal, dan tanggal adalah lima hal yang harus Anda tambahkan sendiri, masing-masing dengan kode siap salin.