Bahasa Melayu

Alat pembangun · JSON pemformat & pengesah

Bagaimana JSON menggantikan XML sebagai format lalai untuk API web

· Latar belakang

json piawaian pengesahan

Bagaimana JSON menggantikan XML sebagai format lalai untuk API web yang digambarkan dengan token JSON dan sempadan pengesahan yang tepat
Ilustrasi vektor ToolAcre asal

Dua puluh tahun yang lalu XML ialah format yang diandaikan untuk apa-apa yang dihantar antara sistem. Siaran ini mengesan cara JSON menggantikannya dalam API web, untuk tujuan apa setiap format direka bentuk dan sebab XML masih mendominasi sesetengah domain.

Tinggal satu SOAP titik tamat

Tinggal satu SOAP titik akhir — penyepaduan yang bercakap XML dalam pangkalan kod di mana semua yang lain bercakap JSON dan persoalan bagaimana kami sampai di sini. Kontras sering muncul dalam kod klien: satu laluan mengurus sampul surat, ruang nama dan jenis yang dijana, manakala titik akhir yang lebih baharu menukar objek biasa melalui perpustakaan HTTP yang ringan. Pemerhatian itu menggambarkan seni bina tempatan, bukan kronologi sejagat.

Pemformat mengendalikan JSON sahaja; penukaran format silang kepunyaan panel penukar Sintaks yang berasingan. Populariti JSON tidak menjadikan XML usang, begitu juga percetakan cantik tempatan mengesahkan kontrak API. Artikel ini membezakan penerimaan sejarah daripada tingkah laku yang lebih sempit yang dilaksanakan pada laluan ini. Tuntutan sejarah yang tidak disokong tentang tarikh penentu, punca atau penggantian seluruh pasaran sengaja ditinggalkan atau diperbetulkan dan bukannya disimpulkan daripada lalai masa kini.

Untuk apa XML dibina

Untuk tujuan XML — dokumen dengan kandungan campuran, ruang nama, skema dan saluran paip transformasi. Elemen boleh mengandungi kedua-dua teks dan penanda anak, atribut boleh membawa metadata, dan nama yang memenuhi syarat ruang nama membolehkan perbendaharaan kata wujud bersama. Teknologi seperti XML Skema, XPath dan XSLT menyokong pengesahan, pertanyaan dan transformasi merentas aliran kerja berpusatkan dokumen.

Keupayaan tersebut tidak percuma apabila muatan adalah penerbitan, dokumen perniagaan yang ditandatangani atau mesej industri yang boleh diperluaskan. Mereka mengenakan lebih banyak konsep daripada pertukaran objek-dan-tatasusunan yang mudah. Oleh itu, membandingkan contoh yang setara harus mempertimbangkan kontrak, bukan sahaja kiraan aksara: XML dan JSON mendedahkan alat pemodelan yang berbeza dan sintaks tidak membekalkan semantik domain yang betul secara automatik.

Perkara yang boleh dilakukan oleh pelayar secara asli

Perkara yang boleh dilakukan oleh pelayar secara asli — XMLHttpRequest boleh mendapatkan sama ada format teks dan pelayar menawarkan penghuraian XML DOM. Kod JavaScript awal kadangkala dinilai teks seperti JSON, amalan tidak selamat apabila input tidak dipercayai; standard `JSON.parse` kemudiannya menyediakan penghurai khusus. Dihuraikan JSON memetakan secara semula jadi kepada JavaScript tatasusunan, objek, rentetan, nombor, boolean dan null.

Pemetaan itu mengurangkan upacara untuk banyak aplikasi pelayar, tetapi ia bukan bukti bahawa pelayar tidak dapat memproses XML atau yang API sahaja yang menentukan penerimaan. XML DOM mengekalkan elemen, atribut dan ruang nama daripada menjadi objek biasa secara automatik. Tuntutan sejarah tentang penyebab memerlukan sumber di luar kemudahan pelaksanaan, jadi versi yang tidak disokong akan ditinggalkan atau diperbetulkan di sini.

Titik perubahan — API web awam yang menawarkan JSON bersama XML, kemudian JSON sahaja dan REST menggantikan SOAP untuk kebanyakan perkhidmatan baharu

Titik perubahan — banyak API web awam mendedahkan JSON bersama XML dan banyak perkhidmatan kemudiannya memilih JSON sebagai perwakilan utama mereka. Gaya HTTP ringan juga menjadi biasa untuk API aplikasi manakala SOAP kekal dalam ekosistem yang mantap. Bahagian pasaran yang tepat, penggerak pertama dan tarikh berbeza mengikut sumber dan tidak boleh diwujudkan daripada repositori pemformat ini.

Sehubungan itu, dakwaan sejarah yang tidak disokong akan ditinggalkan atau diperbetulkan dan bukannya ditukar kepada cerita sebab tunggal yang kemas. Mekanisme yang boleh dipertahankan ialah tekanan kebolehoperasian: perpustakaan pelanggan, dokumentasi, peralatan dan perkhidmatan bersebelahan mengukuhkan format apabila pasukan menyeragamkan di sekelilingnya. Maklum balas itu boleh menjelaskan lalai setempat tanpa mendakwa bahawa XML hilang atau setiap REST API menggunakan JSON.

Kos suis

Kos suis — JSON tidak mempunyai perbezaan asli antara atribut dan elemen anak, tiada model kandungan campuran dan tiada sintaks ulasan. Tatabahasa asas JSON juga tidak mentakrifkan skema aplikasi. Pasukan yang memerlukan kontrak menambah sistem berasingan seperti JSON Skema atau OpenAPI, masing-masing dengan perbendaharaan kata, perkakasan dan keputusan versi sendiri.

Oleh itu, penukaran boleh kehilangan maklumat melainkan pemetaan direka secara eksplisit. Elemen XML berulang mungkin menjadi tatasusunan, nama yang memenuhi syarat ruang nama memerlukan perwakilan dan teks yang dijalin dengan penanda tidak boleh sentiasa menjadi objek ringkas dengan bersih. Sintaks muatan yang lebih mudah memindahkan beberapa kerumitan ke dalam kontrak atau konvensyen luaran; ia tidak menjadikan pengesahan, evolusi dan dokumentasi tidak diperlukan.

Di mana XML masih menang

Di mana XML masih menang — aliran kerja penerbitan mendapat manfaat daripada kandungan campuran dan perbendaharaan kata dokumen yang mantap, manakala format pejabat membungkus bahagian XML untuk mewakili dokumen yang kaya. Piawaian pemesejan kewangan dan perusahaan yang matang mungkin bergantung pada ruang nama, skema, tandatangan atau pelaburan alat jangka panjang. Menggantikan sintaks memerlukan penyelarasan ekosistem, bukan sekadar muatan sampel yang lebih pendek.

XML juga berguna apabila transformasi dan pertanyaan berasaskan laluan menjadi pusat kepada aliran kerja. JSON boleh menyediakan domain ini dengan konvensyen tambahan, sama seperti XML boleh menyediakan API biasa, tetapi nilai migrasi mesti melebihi kos kontrak dan perkakas. Populariti dalam perkhidmatan yang dihadapi oleh pelayar bukanlah bukti keunggulan untuk setiap masalah perwakilan dan tuntutan yang tidak disokong bagi jumlah anjakan dibetulkan atau ditinggalkan.

Perkara ini tidak meliputi

Perkara yang tidak dilindungi ini — alternatif binari seperti Penampan Protokol dan MessagePack, yang bersaing dengan syarat yang berbeza. Saiz wayar, keperluan skema, tingkah laku penstriman dan perkakas mereka memerlukan penilaian berasingan. Ini juga tidak membandingkan konvensyen hipermedia, protokol pengangkutan atau gaya API; SOAP berbanding REST bukan sekadar XML berbanding JSON dan mana-mana perwakilan boleh melalui HTTP.

Ini juga bukan sejarah kuantitatif bersumberkan penerimaan API. Pernyataan tepat tentang tarikh, peratusan, pelaksanaan pertama atau punca seluruh industri tidak disokong oleh bukti repositori yang disenaraikan, jadi ia ditinggalkan atau diperbetulkan. Artikel itu sebaliknya menerangkan keupayaan format yang boleh diperhatikan dan akibat kejuruteraan yang munasabah tanpa mengemukakan akibat tersebut sebagai bukti naratif sejarah yang lengkap.

Bawa pulang: JSON menang atas kesederhanaan, bukan kesempurnaan

Bawa pulang: JSON menjadi lalai biasa untuk kebanyakan API web melalui model data padat, sokongan langsung dalam bahasa arus perdana dan alat sekeliling yang meluas, bukan kerana ia mengandungi setiap ciri yang ditawarkan XML. XML kekal sesuai di mana struktur dokumen, ruang nama, transformasi atau skema yang telah ditetapkan adalah penting. Pilihan format mengikut kontrak dan ekosistem dan bukannya kedudukan sejagat.

ToolAcre mencerminkan model sempit JSON dengan menghuraikan, mengesahkan dan mencetak cantik JSON pada laluan ini; ia tidak memperakui API semantik atau menjadikan XML usang. Gunakan penukaran format silang sahaja apabila pemetaan yang ditentukan mengekalkan maklumat yang diperlukan. Pastikan sejarah sama-sama berhati-hati: dakwaan yang tidak disokong tentang titik balik tunggal atau penggantian lengkap ditinggalkan atau diperbetulkan, meninggalkan mekanisme dan tingkah laku yang boleh dipertahankan.