Saya pikir XML sangat portabel dan dapat digunakan sebagai basis data mini. Saya telah melihat XML digunakan di mana-mana. Saya bahkan melihat perusahaan besar beralih ke JSON . Bahkan Microsoft memiliki dukungan terintegrasi untuk JSON. Apa semua hype atas JSON?
155
Jawaban:
Pada dasarnya karena JSON diakui secara asli oleh JavaScript, ini sangat ringan, minimalis dan sangat portabel karena hanya bergantung pada dua struktur mendasar:
sumber
XML tidak benar-benar mulai bersinar sampai Anda mulai mencampurkan berbagai skema ruang nama yang berbeda. Kemudian Anda melihat JSON mulai jatuh, tetapi jika Anda hanya memerlukan format serialisasi untuk data Anda, JSON lebih kecil, lebih ringan, lebih mudah dibaca manusia, dan umumnya lebih cepat dari XML.
sumber
Saya menemukan bahwa manfaat besar JSON atas XML adalah bahwa saya tidak harus memutuskan cara memformat data. Seperti yang telah ditunjukkan beberapa orang, ada banyak cara untuk melakukan bahkan struktur data sederhana dalam XML - sebagai elemen, sebagai nilai atribut, dll. Kemudian Anda harus mendokumentasikannya, menulis Skema XML atau Relax NG atau omong kosong lainnya ... Ini berantakan.
XML mungkin memiliki kelebihannya, tetapi untuk pertukaran data dasar, JSON jauh lebih ringkas dan langsung. Sebagai pengembang Python, tidak ada ketidaksesuaian impedansi antara tipe data sederhana di JSON dan di Python. Jadi jika saya menulis server-side handler untuk permintaan AJAX yang menanyakan kondisi salju untuk resor Ski tertentu, saya akan membuat kamus seperti berikut:
Ketika diterjemahkan melalui JSON (menggunakan pustaka seperti 'simplejson' untuk Python), struktur JSON yang dihasilkan terlihat hampir identik (kecuali dalam JSON, boolean dikurung lebih rendah).
Mendekode struktur itu hanya memerlukan pengurai JSON, apakah itu untuk Javascript atau Objective-C untuk aplikasi iPhone asli atau C # atau klien Python. Float akan diartikan sebagai float, string sebagai string, dan booleans sebagai booleans. Menggunakan perpustakaan 'simplejson' di Python, sebuah
simplejson.loads(some_json_string)
pernyataan akan memberi saya kembali struktur data lengkap seperti yang baru saja saya buat dalam contoh di atas.Jika saya menulis XML, saya harus memutuskan apakah akan melakukan elemen atau atribut. Kedua hal berikut ini valid:
Jadi saya tidak hanya harus memikirkan data yang mungkin ingin saya kirim ke klien, saya juga harus memikirkan cara memformatnya. XML, meskipun lebih sederhana daripada SGML biasa dengan lebih ketat dengan aturannya, masih menyediakan terlalu banyak cara untuk berpikir tentang data itu. Maka saya harus pergi tentang menghasilkannya. Saya tidak bisa hanya mengambil kamus Python (atau struktur data sederhana lainnya) dan mengatakan "pergi buat dirimu sendiri ke dalam XML saya". Saya tidak dapat menerima dokumen XML dan langsung mengatakan "buat dirimu menjadi objek dan struktur data" tanpa menulis parser khusus, atau tanpa memerlukan overhead tambahan Skema XML / Relax NG dan rasa sakit lainnya.
Singkatnya adalah bahwa itu jauh lebih mudah dan lebih langsung untuk menyandikan dan mendekode data ke JSON, terutama untuk pertukaran cepat. Ini mungkin berlaku lebih untuk orang-orang yang berasal dari latar belakang bahasa dinamis, karena tipe data dasar (daftar, kamus, dll.) Yang dibangun di JavaScript / JSON secara langsung memetakan ke tipe data yang sama atau serupa di Python, Perl, Ruby, dll.
sumber
Kinerja JSON tidak jauh berbeda dari XML untuk sebagian besar kasus penggunaan, JSON tidak cocok dan dapat dibaca untuk struktur sarang yang dalam ... Anda akan mengalami]]]}], yang membuat proses debug sulit dilakukan
sumber
Ini ringan dibandingkan dengan XML. Jika Anda perlu skala, kurangi persyaratan bandwidth Anda!
Bandingkan JSON
ke XML:
sumber
Hanya sebuah anekdot dari pengalaman pribadi saya:
Saya menulis direktori Javascript kecil, pertama dengan data dalam XML, dan kemudian mengadaptasinya untuk menggunakan JSON sehingga saya bisa menjalankannya berdampingan dan membandingkan kecepatan dengan Firebug. JSON berakhir menjadi sekitar 3 kali lebih cepat (350-400 ms vs 1200-1300 ms untuk menampilkan semua data). Juga, seperti yang telah dicatat orang lain, JSON jauh lebih mudah di mata dan ukuran file adalah 25% lebih baik karena markup yang lebih ramping.
sumber
Dengan atribut, XML itu bagus. Namun karena beberapa alasan, XML buatan sendiri umumnya 100% terbuat dari elemen, dan jelek.
sumber
Konsumsi yang mudah oleh JavaScript dapat menjadi salah satu alasannya ..
sumber
JSON adalah yang terbaik untuk konsumsi data dalam aplikasi web dari layanan web untuk ukuran dan kemudahan penggunaannya, terutama karena dukungan bawaan dalam JavaScript . Bayangkan overhead perhitungan untuk parsing sebuah fragmen xml dibandingkan dengan pencarian instan di JSON.
Contoh yang sangat bagus adalah JSON-P. Anda dapat memperoleh kembali data dari layanan web yang dibungkus dengan panggilan fungsi panggilan balik, seperti
my_callback({"color": "blue", "shape":"square"});
di dalam<script>
tag yang dibuat secara dinamis sehingga data dapat langsung dikonsumsi dalam fungsi tersebutmy_callback()
. Tidak ada cara untuk mendekati kenyamanan ini menggunakan XML.XML akan menjadi format pilihan untuk dokumen besar, di mana Anda memiliki kerangka kerja merender halaman data dalam berbagai format menggunakan XSLT. XML juga dapat digunakan dengan file konfigurasi aplikasi agar mudah dibaca di antara banyak kegunaan lain.
sumber
Tidak ada seorang pun di sini yang menyebutkan keunggulan utama XML: aturan validasi (DTD, XSD). Kesimpulan saya, setelah menggunakan keduanya:
Tentu saja, ada skema json yang sedang dikembangkan tetapi Anda tidak akan menemukan dukungan bawaan untuk itu di mana pun.
Saya seorang fanboy dari keduanya, mereka memiliki kekuatan yang berbeda.
sumber
Sekarang ada JSON encoders dan decoder untuk sebagian besar bahasa, tidak ada alasan untuk TIDAK menggunakan JSON untuk penggunaan yang masuk akal (dan itu mungkin 90% dari use case untuk XML).
Saya bahkan pernah mendengar tentang string JSON yang digunakan dalam database SQL besar untuk membuat perubahan skema lebih mudah.
sumber
Sejujurnya, tidak ada yang jauh berbeda antara JSON dan XML dalam kenyataan bahwa mereka dapat mewakili semua jenis data. Namun, XML secara sintaksis lebih besar dari JSON dan itu membuatnya lebih berat dari JSON.
sumber
JSON tidak memiliki impedansi-ketidakcocokan dengan pemrograman JavaScript. JSON dapat berisi bilangan bulat, string, daftar, array. XML hanyalah elemen dan node yang perlu diuraikan menjadi bilangan bulat dan seterusnya sebelum dapat dikonsumsi.
sumber
Keduanya bagus dan sangat portabel. Namun JSON telah mendapatkan popularitas karena serialisasi menjadi lebih sedikit karakter dalam banyak kasus (yang diterjemahkan ke dalam waktu pengiriman yang lebih cepat) dan karena cocok dengan sintaks objek JavaScript, ia dapat langsung diterjemahkan ke dalam objek dalam memori yang membuat Ajax jauh lebih mudah untuk melaksanakan.
XML masih bagus. JSON hanyalah "terbaru dan terhebat" dibandingkan dengan XML.
sumber
Mudah diuraikan oleh JavaScript dan ringan (dokumen di JSON lebih kecil dari dokumen XML yang berisi data yang sama.)
sumber
JSON adalah serialisasi JavaScript yang efektif yang dapat Anda eval (aJsonString) langsung ke objek JavaScript. Di dalam browser itu adalah JSON no-brainer yang sangat cocok untuk JavaScript. Pada saat yang sama, JavaScript adalah bahasa dinamis yang diketik dengan sangat longgar dan tidak dapat mengambil keuntungan dari semua informasi jenis spesifik yang tersedia yang terdapat dalam dokumen Xml / Xsd. Metadata ekstra ini (yang bagus untuk interoperabilitas) adalah penghalang dalam JavaScript sehingga membuatnya lebih membosankan dan lebih sulit untuk digunakan.
Ukuran vs Kinerja
Jika Anda menggunakan browser JSON lebih cepat untuk membuat serial / deserialize karena lebih sederhana, lebih ringkas, dan yang lebih penting didukung secara native. Saya memiliki beberapa tolok ukur database northwind yang tersedia membandingkan ukuran dan kecepatan antara berbagai serializers yang tersedia. Di Perpustakaan Kelas Dasar, serializer XML DataContract Microsoft lebih dari 30% lebih cepat daripada JSON mereka. Meskipun ini lebih berkaitan dengan upaya yang dilakukan Microsoft ke dalam serializer XML mereka karena saya dapat mengembangkan JsonSerializer yang lebih cepat 2,6x daripada XML. Adapun payload berdasarkan tolok ukur itu tampak seolah-olah XML kira-kira lebih dari 2xukuran JSON. Namun ini dapat dengan cepat meledak jika payload XML Anda menggunakan banyak ruang nama yang berbeda dalam dokumen yang sama.
sumber
XML adalah minyak ular kembung di sebagian besar situasi. JSON memberi Anda sebagian besar manfaat tanpa mengasapi.
sumber
Satu kelebihan utama selain yang disebutkan di sini. Untuk data yang sama, ada beberapa cara untuk merepresentasikannya sebagai file XML tetapi hanya satu cara dengan JSON, menghilangkan ambiguitas :)
sumber
{"colors":["red","green","blue"],"systems":["windows","mac"]}
vs.{"entries":[{"type":"color","value":"red"},{"type":"system","value":"mac"}]}
Sejauh ini saya bukan ahli, tetapi dari berbagai perusahaan tempat saya bekerja, kita biasanya menggunakan XML dalam lingkungan data kecil atau nilai konfigurasi (web.config adalah contoh yang bagus).
Ketika Anda memiliki sejumlah besar data, umumnya, Anda ingin melaporkan data itu. Dan XML bukan sumber yang bagus untuk pelaporan. Dalam skema besar, tampaknya seolah-olah basis data transaksional lebih mudah dilaporkan / dicari dibandingkan dengan XML.
Apakah ini masuk akal? Seperti yang saya katakan di atas, saya bukan ahli tetapi dari pengalaman saya ini tampaknya menjadi masalah. Juga, saya percaya Microsoft terintegrasi dukungan JSON karena gelombang pengembang pindah ke sisi klien atau tindakan tertulis untuk meningkatkan visual UI ( Ajax ) dan Microsoft Ajax belum digunakan sebanyak perpustakaan lain seperti jQuery dan MooTools ( YUI Yahoo juga ada dalam campuran itu) karena integrasi mereka yang indah dari objek serial menggunakan JSON.
Saya menemukan diri saya sedang menulis kode sekarang mengimplementasikan serializer JSON dalam kode VB saya. CARA itu terlalu mudah dan dari sudut pandang peningkatan / modifikasi, Anda tidak bisa mengalahkannya. Ini cara Microsoft untuk membuat kita kecanduan VS, kurasa. Saya baru-baru ini mengkonversi aplikasi perusahaan untuk menggunakan Ajax (via jQuery) dan menggunakan format JSON. Butuh sekitar 2 minggu untuk melakukannya. Saya sebenarnya berterima kasih kepada Microsoft untuk mengintegrasikannya karena tanpa itu, saya harus menulis sedikit kode tambahan.
sumber