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:
conditions = {
'new_snow_24': 5.0,
'new_snow_48': 8.5,
'base_depth': 88.0,
'comments': 'Deep and steep!',
'chains_required': True,
}
return simplejson.dumps(conditions) # Encode and dump `conditions` as a JSON string
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:
<conditions>
<new-snow-24>5</new-snow-24>
<new-snow-48>8.5</new-snow-48>
<chains-required>yes</chains-required>
<comments>deep and steep!</comments>
</conditions>
<conditions newSnow24="5" newSnow48="8.5" chainsRequired="yes">
<comments>deep and steep!</comments>
</conditions>
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.