Sempadan Penukaran JSON ↔ YAML dan XML
Dakwaan bahawa JSON ialah subset YAML hanya menjamin satu arah, dan XML tidak mempunyai pemetaan JSON rasmi sama sekali — segala-galanya bergantung pada konvensyen.
Penukaran antara JSON dan YAML, XML, CSV, TypeScript, Java, Go, serta SQL tidak pernah tanpa kehilangan. Yang penting ialah menyatakan dengan jelas di mana kehilangan itu berlaku.
8 artikelDakwaan bahawa JSON ialah subset YAML hanya menjamin satu arah, dan XML tidak mempunyai pemetaan JSON rasmi sama sekali — segala-galanya bergantung pada konvensyen.
CSV bersifat dua dimensi, JSON berbentuk pokok. Bahagian sukar penukaran bukan kod — ia ialah memutuskan lebih awal bagaimana tatasusunan diratakan dan bagaimana jenis dikekalkan.
Struktur bersarang, medan tidak konsisten dan tatasusunan bertatasusunan ialah tempat penukaran JSON kepada hamparan rosak. Empat pendekatan disusun mengikut masa untuk hasil, masing-masing dengan pertukarannya.
Menukar JSON menjadi SQL INSERT menyembunyikan pemecahan jadual bersarang, NULL berbanding tiada, escaping, dan jurang dialek. Pernyataan yang boleh dijalankan serta jadual perbandingan bagi setiap perangkap.
Menjana antara muka daripada sampel JSON hanyalah separuh kerja: medan pilihan, null, gabungan, tarikh dan integer besar memerlukan semakan manusia, dan jenis tidak melakukan pengesahan masa jalan.
Arahan yang paling kerap disalin dalam setiap tutorial, yq -P input.json > output.yaml, masih mengeluarkan JSON pada yq v4. Artikel ini menguji yq v4.44.6, PyYAML 6.0.3 dan js-yaml pada sampel 2.39 MB, menerangkan mengapa sambungan input menentukan format output, dan memberi resipi yang betul untuk penukaran pukal, petikan, inden dan ketepatan integer besar.
Sembilan eksperimen pada penukar sebenar: strategi "kunci rekod pertama" kehilangan medan secara senyap, null, ketiadaan dan rentetan kosong semuanya menjadi sel kosong, integer 20 digit hilang ketepatan seawal JSON.parse, dan titik dalam kunci membuat dua laluan berbeza berlanggar dalam lajur yang sama. Bagaimana pengepala dibina, nilai mana yang terherot dan cara memilih strategi mengikut kegunaan hilir.
Tinjauan praktikal tentang apa yang penjana JSON-to-Java sebenarnya keluarkan — nombor jadi Double, objek bersarang jadi kelas dalaman statik, dan tiada anotasi Jackson langsung dihasilkan. Ketepatan wang, penamaan semula medan, pemadaman jenis, medan tidak dikenali dan tarikh ialah lima perkara yang anda sendiri perlu tambah, setiap satu dengan kod sedia salin.