Kapan lebih suka JSON daripada XML?

148

Persyaratan saya hanya untuk menampilkan sekumpulan nilai yang diambil dari basis data pada spread. Saya menggunakan jquery.

sarego
sumber

Jawaban:

149

Mendukung XML daripada JSON ketika semua ini benar:

  • Anda membutuhkan validasi pesan
  • Anda menggunakan XSLT
  • Pesan Anda menyertakan banyak teks yang ditandai
  • Anda perlu beroperasi dengan lingkungan yang tidak mendukung JSON

Mendukung JSON daripada XML ketika semua ini benar:

  • Pesan tidak perlu divalidasi, atau memvalidasi deserialisasi mereka sederhana
  • Anda tidak mengubah pesan, atau mengubah deserialisasi mereka sederhana
  • Pesan Anda sebagian besar data, bukan teks yang ditandai
  • Titik akhir perpesanan memiliki alat JSON yang baik
Robert Rossney
sumber
9
JSON tidak menawarkan keunggulan dibandingkan XML dalam menangani teks yang ditandai. Tapi saya mengerti maksud Anda; itu mungkin berlebihan.
Robert Rossney
10
Ketika semua kondisinya sama, pilih JSON karena dua alasan: JSON jauh lebih ringan untuk diurai daripada XML (ramah CPU) dan membutuhkan lebih sedikit data untuk ditransfer (Ramah jaringan).
Roger Barreto
Kapan Anda akan menggunakan XSLT dan tidak menggunakan XML? XML diberikan jika Anda sudah menggunakan XSLT. Seharusnya tidak mendukung argumen untuk menggunakan XML. Ini seperti mengatakan menggunakan JSON jika Anda menggunakan JSON.parse (). Juga, saya berpendapat bahwa lebih mudah untuk mengubah objek JSON daripada menulis transformasi XSLT, tapi itu mungkin bias pribadi saya.
Spencer
Saya tidak sepenuhnya setuju dengan bagian validasi di JSON. JSON juga valid. Periksa draft IETF ini: tautan Ini draft tetapi tetap ..
sotn
@ sotn Anda belum memiliki PL / SQL untuk JSON karena memiliki XML (mis. XQuery). Ini adalah basis untuk beberapa NoSQL DB (eXist, MarkLogic Server, EMC Documentum xDB, BaseX, Zorba)
Dmytro Melnychuk
81

Saya menggunakan JSON kecuali saya harus menggunakan XML. Ini lebih mudah dipahami, dan (karena membutuhkan lebih sedikit konfigurasi overhead) lebih mudah untuk memprogram untuk membaca dan menulis jika perpustakaan tersedia dalam konteks Anda, dan mereka sekarang ada di mana-mana.

Ketika Amazon pertama kali mengekspos katalog mereka sebagai layanan web, mereka menawarkan JSON dan XML. Sekitar 90% pelaksana memilih JSON.

dkretz
sumber
56
"Saya menggunakan JSON kecuali saya harus menggunakan XML." ~ Tepat.
EndangeredMassa
2
Jadi pertanyaan yang lebih dalam adalah "Untuk alasan apa Anda diminta menggunakan XML?" Apakah alasan itu idiot; atau apakah mereka hanya mencerminkan keprihatinan yang berbeda, dari sudut pandang yang berbeda dari Anda?
13ren
5
Beberapa kemungkinan alasan, termasuk perangkat lunak yang ada, saya tidak ingin menulis ulang. Tetapi yang paling penting adalah menggunakan XML sebagai format pertukaran data di mana saya tidak mengontrol kedua ujungnya, atau ada standar formal yang berlaku dan membutuhkan XML. Saya hanya dapat memilih secara sewenang-wenang ketika saya satu-satunya pengembang yang terlibat.
dkretz
15

Mempertimbangkan kasus spesifik Anda di mana Anda sudah melakukan javascript di sisi klien, saya akan menggunakan JSON karena alasan berikut:

  • Karena JSON adalah asli untuk javascript Anda harus menulis lebih sedikit kode di sisi klien - Hanya eval()(atau, lebih baik lagi JSON.parse()), string JSON dan dapatkan objek yang dapat Anda gunakan.

  • Pada saat yang sama mengevaluasi JSON di sisi klien akan lebih efisien, dan karenanya lebih cepat.

  • Serialisasi JSON menghasilkan string yang lebih pendek dari XML. Menggunakan JSON akan mengurangi jumlah data yang berjalan lintas kabel dan meningkatkan kinerja dalam hal itu.

Inilah beberapa bacaan lebih lanjut: http://www.subbu.org/blog/2006/08/json-vs-xml

urig
sumber
7
tidak eval()ing JSON besar tidak-tidak?
shoosh
@Shy, situs JSON sendiri mengatakan Anda dapat menggunakan eval pada JSON (dengan tanda kurung melilit): json.org/js.html
strager
9
Diambil dari json.org: Fungsi eval sangat cepat. Namun, itu dapat mengkompilasi dan menjalankan program JavaScript apa pun, sehingga bisa ada masalah keamanan. Penggunaan eval ditunjukkan ketika sumbernya dipercaya dan kompeten. Jauh lebih aman untuk menggunakan parser JSON
sarego
2
Pilih JSON.parse () untuk eval ().
Havvy
14

Beberapa hal lain yang saya temui di relm XML vs JSON:

JSON sangat baik untuk

  • pasangan nama / nilai
  • bersarang pasangan itu

Yang artinya cenderung menyukai array atau array bersarang. Namun JSON tidak memiliki keduanya

  • atribut
  • penempatan nama

Jadi, jika Anda menggabungkan dua atau lebih layanan JSON, mungkin ada potensi konflik namespace. Itu dikatakan JSON dapat digunakan untuk sekitar 90% dari hal-hal yang sama dengan XML dapat digunakan ketika bertukar data dalam pengalaman saya.

batal
sumber
Masalah lain dari Json adalah bahwa Anda tidak dapat menggabungkan dua pesan json dengan mudah untuk membuat pesan json baru. Biasanya tidak akan berformat baik ..
vtd-xml-author
7
Untuk apa Anda membutuhkan atribut? Jika elemen Anda mengandung nilai lain, jadikan itu objek - anggota adalah "atribut" Anda. Terus terang, saya pikir atribut bifurcal / struktur wadah XML sepenuhnya merugikan.
foo
Saya berpendapat bahwa JSON tidak memiliki atribut adalah fitur.
Brian
11

Biasanya JSON lebih ringkas, dan lebih cepat diurai.

Lebih suka XML jika:

  • Anda perlu memproses data pada klien, dan Anda dapat memanfaatkan XSL untuk itu. Kemungkinan rantai XML + XSL akan bekerja lebih cepat daripada JSON + JavaScript terutama untuk potongan besar data.
    • Satu kasus yang baik adalah mengubah data menjadi cuplikan HTML.
  • Berbagai kasus warisan:
    • Ada layanan XML yang ada, dan sulit untuk menulis ulang dengan JSON karena beberapa alasan.
    • Anda harus memposting data ini kembali sebagai XML setelah proses ringan menggunakan input pengguna.

Satu kasus penting dari (hampir) XML: mencoba mendeteksi ketika mengirim cuplikan HTML lebih menguntungkan daripada mengirim data mentah. AHAH dapat melakukan keajaiban dalam aplikasi sederhana, namun sering diabaikan. Biasanya gaya ini mengasumsikan bahwa server mengirimkan cuplikan HTML yang akan diuraikan dalam halaman web tanpa diproses.

Biasanya dalam kasus AHAH, CSS ditingkatkan dengan maksimal untuk memijat cuplikan secara visual dan menerapkan persyaratan sederhana seperti menyembunyikan / menampilkan bagian relevan cuplikan menggunakan pengaturan khusus pengguna atau aplikasi khusus.

Eugene Lazutkin
sumber
8

JSON mudah dan cepat untuk diurai. XML sedikit lebih sulit diurai, dan lebih lambat untuk diurai dan ditransfer (dalam banyak kasus).

Karena Anda menggunakan jQuery, saya sarankan menggunakan JSON: jQuery dapat mengambil kembali data JSON dan mengubahnya menjadi objek Javascript secara otomatis. Bahkan, Anda bisa mengonversi data JSON menjadi objek Javascript menggunakan eval . XML harus ditransformasikan secara manual oleh Anda (Saya tidak tahu bagaimana ini bekerja dalam Javascript, tetapi sulit / lebih menyebalkan di sebagian besar bahasa yang saya gunakan dengan perpustakaan XML).

strager
sumber
1
JSON adalah definisi objek JavaScript, jQuery tidak benar-benar melakukan sesuatu yang "konversi" khusus. Hanya berpikir itu harus diklarifikasi.
Brian Gianforcaro
5
JSON bukan objek javascript kecuali itu dipakai dalam javascript. Itu terjadi mengikuti format yang digunakan untuk membuat serial objek javascript, tetapi dapat diakses (dengan add-on dan built-in yang tepat) dari sebagian besar bahasa, setidaknya semudah XML.
dkretz
@ Gianforcaro, saya menyadari ini. Saya akan mengedit posting saya untuk menyatakan lebih jelas. @doofledorfer, saya berkata "dan mengubahnya menjadi objek Javascript." Saya tidak mengatakan data JSON adalah objek Javascript.
strager
Ah, maaf, tidak menangkapnya.
strager
8

JSON selalu lebih disukai dalam hal pemrosesan yang harus dilakukan browser klien untuk mem-parsing data. Juga, JSON adalah format pertukaran data yang ringan.

Penguraian XML selalu menghabiskan banyak sumber daya peramban dan harus dihindari sebanyak yang kami bisa kecuali diminta sebaliknya.

Tejasvi
sumber
7

Saya memiliki posting blog pada subjek yang merinci sejarah protokol web (yaitu SOAP, XML, JSON, REST, POX, dll) memberikan ringkasan serta beberapa kelebihan dan kekurangan masing-masing: http://www.servicestack.net / mythz_blog /? p = 154

Saya benar-benar berpikir Anda dapat menggambar banyak kesamaan antara XML dan JSON dengan membandingkan perbedaan antara bahasa dinamis (JSON) dan statis (XML).

Pada dasarnya XML adalah format serialisasi yang lebih ketat, lebih kaku yang secara opsional dapat diverifikasi dengan skema yang menyertainya (yang merupakan XSD atau DTD). XSD's sangat rumit dan memungkinkan Anda untuk menggambarkan berbagai jenis misalnya Tanggal, Waktu, Pencacahan, Jenis yang Ditetapkan Pengguna dan bahkan Jenis warisan, dll. SOAP secara efektif dibangun di atas rangkaian fitur XML yang menyediakan cara standar untuk menggambarkan layanan web Anda ( mis. tipe dan operasi) melalui WSDL. Vbositas dan kompleksitas dari spesifikasi WSDL berarti bahwa itu bisa lebih membosankan untuk dikembangkan dengan tetapi pada saat yang sama ada lebih banyak perkakas yang tersedia untuk Anda dan sebagian besar bahasa modern menyediakan alat otomatis untuk menghasilkan proksi klien Anda mengambil beberapa beban. off ketika mencoba untuk beroperasi dengan layanan eksternal.

Saya masih merekomendasikan menggunakan XML untuk layanan web Anda jika Anda memiliki 'layanan perusahaan' yang terdefinisi dengan baik yang tidak dapat sering berubah atau layanan web Anda perlu diakses dari berbagai bahasa.

Untuk semua manfaatnya XML hadir dengan kelemahan juga. Itu bergantung pada ruang nama untuk memberikan format yang dapat diperpanjang diketik dan memungkinkan Anda untuk menentukan atribut dan elemen dalam dokumen yang sama. Memiliki ruang nama yang berbeda dalam satu dokumen berarti banyak waktu ketika menggunakan Parser Xml untuk mengekstrak data, Anda juga perlu memberikan namespace dari setiap elemen yang ingin Anda ambil / lintasi. Ini juga meramalkan muatan sehingga membuatnya lebih bertele-tele dari yang seharusnya. Memiliki opsi untuk menampilkan atribut serta elemen berarti kelas Anda tidak memetakan dengan baik ke dokumen XML. Fitur-fitur ini saja membuatnya kurang terprogram untuk sebagian besar bahasa membuatnya lebih membosankan dan tidak praktis untuk digunakan.

JSON di sisi lain adalah kebalikan dari XML dalam banyak hal karena sangat longgar dan hanya memiliki dukungan sederhana untuk tipe dasar: Number, Bool, string, Objects and Arays. Segala sesuatu yang lain pada dasarnya harus muat dalam sebuah string. Ini tidak bagus ketika mencoba berkomunikasi lintas batas bahasa karena Anda harus mematuhi beberapa spesifikasi non-standar out-of-band jika Anda ingin mendukung jenis yang lebih spesifik. Pada sisi atas, set fitur terbatasnya membuat program terprogram dengan baik untuk sebagian besar bahasa - dan sangat cocok untuk JavaScript karena string JSON dapat dievaluasi secara langsung ke objek JavaScript.

Ukuran dan Performa

Saya memiliki beberapa tolok ukur database northwind yang tersedia membandingkan ukuran dan kecepatan antara Microsoft XML dan implementasi JSON. Pada dasarnya XML lebih dari 2x ukuran JSON tetapi pada saat yang sama tampak seolah-olah Microsoft berupaya keras dalam mengoptimalkan XML DataContractSerializer mereka karena lebih dari 30% lebih cepat daripada JSON mereka. Tampaknya Anda harus melakukan trade-off antara ukuran dan kinerja. Tidak senang dengan fakta ini, saya memutuskan untuk menulis JsonSerializer cepat saya sendiri yang sekarang 2.6x lebih cepat dari MS XML satu - jadi yang terbaik dari kedua dunia :).

mitos
sumber
6

Saya akan memilih XML daripada JSON jika saya perlu memvalidasi potongan data yang masuk, karena XML mendukung ini secara aktif melalui XSD.

lowglider
sumber
3

dari JSON - kaki terakhir

Saat Anda menuruni rute JSON, Anda mengalami masalah yang sama yang dihadapi XML 10 tahun lalu:

Menggabungkan data dari dua sumber berbeda menjadi satu paket JSON dapat menyebabkan label elemen saling bertabrakan. Campurkan slip kemasan dan faktur, dan tiba-tiba alamat Dari dapat berarti sesuatu yang sangat berbeda. Itu sebabnya XML memiliki ruang nama .

Konversi antara struktur JSON yang berbeda akan membutuhkan penulisan kode biasa. Cara yang lebih deklaratif untuk memetakan data akan membuat pekerjaan lebih mudah. Itu sebabnya XML memiliki XSLT .

Mendeskripsikan struktur paket JSON — bidangnya, tipe data, dll — diperlukan agar orang-orang dapat terhubung ke layanan Anda. Sangat penting untuk memiliki bahasa metadata untuk ini. Itu sebabnya XML memiliki skema .

Melakukan dua percakapan client-server secara simultan menjadi perhatian. Jika Anda mengajukan dua pertanyaan kepada server dan mendapatkan satu jawaban kembali, bagaimana Anda tahu pertanyaan apa yang dijawabnya? Itu sebabnya XML memiliki WS-Correlation .

Özgür
sumber
2
Ruang nama hanyalah solusi lain; Anda dapat melakukan hal yang sama di JSON jika Anda mau. WS-Correlation juga ditambahkan sebagai renungan ke XML dan bukan "bawaan". Anda juga dapat menambahkannya ke JSON. Deskripsi struktur (Skema) tidak khusus untuk XML; Anda dapat melakukannya dengan sejumlah cara ke bahasa formal apa pun sejak ditemukannya eBNF. XSLT adalah nilai jual yang valid.
foo
2

JSON adalah penyandian asli untuk javascript. Seharusnya lebih cepat dan lebih mudah untuk dikerjakan.

Dustin
sumber
2

Dari baris pertama di http://json.org/xml.html

Extensible Markup Language (XML) adalah format teks yang berasal dari Standard Generalized Markup Language (SGML). Dibandingkan dengan SGML, XML sederhana. HyperText Markup Language (HTML), sebagai perbandingan, bahkan lebih sederhana. Meski begitu, buku referensi yang bagus tentang HTML setebal satu inci. Ini karena format dan penataan dokumen adalah bisnis yang rumit. . . .

Jelas JSON lebih cepat, tetapi bahkan lebih jelas bahwa sulit dibaca. Gunakan JSON untuk kecepatan, gunakan XML jika akan ada interaksi manusia dan Anda dapat mengorbankan kecepatan.


sumber
2
Jawaban Anda tidak membawa informasi baru ... Tapi saya rasa itu masih benar
1

Saya menggunakan JSON untuk segala jenis konfigurasi, pertukaran data atau pengiriman pesan. Saya menggunakan XML hanya jika saya harus karena alasan lain atau semantik menandai data seperti dokumen.

Lawrence Dol
sumber
1

XML dan JSON keduanya didukung oleh Microsoft. XML literal adalah fitur keren baru di VB 9. Dalam versi mendatang dari ASP.NET 4.0 JSON adalah suatu keharusan untuk memanfaatkan kekuatan templating sisi klien.

Dari pertanyaan yang Anda ajukan tampaknya JSON mungkin menjadi pilihan bagi Anda karena mudah diproses di sisi klien dengan atau tanpa jQuery.

MoizNgp
sumber
1

Menggunakan JSON

  • Jika data akan dikonsumsi oleh JavaScript di browser.
  • Model data sederhana dan tidak rumit (terlalu banyak objek komposit).

Menggunakan XML

  • Sebagian besar dalam jenis lingkungan SOA di mana Anda mengintegrasikan beberapa layanan pada platform dan teknologi yang heterogen.
  • SOAP memiliki keuntungan yang dapat ditransmisikan melalui protokol yang berbeda selain HTTP.
  • Mudah digunakan dalam alat transformasi model data seperti XSLT, XSL-FO dll.
  • Banyak dukungan Database untuk menyimpan / query (XQuery) data XML.
  • XML adalah format data yang sangat matang sehingga Anda akan menemukan banyak alat untuk mendukung setiap kasus penggunaan yang dapat Anda pikirkan.
Rohitdev
sumber
1

Saya menemukan artikel ini di pasar digital sangat menarik.

Beberapa bagian dari artikel dikutip di bawah ini.

Tentang pro JSON:

Jika semua yang Anda ingin sampaikan adalah nilai atom atau daftar atau hash nilai atom, JSON memiliki banyak keunggulan XML: itu dapat digunakan langsung melalui Internet, mendukung berbagai aplikasi, mudah untuk menulis program untuk memproses JSON, ini memiliki beberapa fitur opsional, itu dapat dibaca manusia dan cukup jelas, desainnya formal dan ringkas, dokumen JSON mudah dibuat, dan menggunakan Unicode. ...

Tentang pro XML:

Penawaran XML sangat baik dengan kekayaan penuh data tidak terstruktur. Saya tidak khawatir tentang masa depan XML sama sekali bahkan jika kematiannya dirayakan dengan gembira oleh kader desainer web API.

Dan aku tidak bisa menahan diri untuk tidak mengatakan, "Sudah kubilang!" token di meja saya. Saya berharap untuk melihat apa yang dilakukan orang-orang JSON ketika mereka diminta untuk mengembangkan API yang lebih kaya. Ketika mereka ingin bertukar data yang kurang terstruktur, apakah mereka akan memilihnya ke JSON? Saya melihat sesekali menyebutkan bahasa skema untuk JSON, akankah bahasa lain mengikuti? ...

Christian Vielma
sumber
Jawaban dan kutipan ini memberikan gambaran yang salah tentang jangka waktu artikel yang dikutip, yang sangat mendukung JSON. Kutipan berasal dari pihak ketiga yang tidak disetujui oleh penulis artikel. Artikel yang dikutip adalah bacaan yang sangat bagus - jadi tidak ada downvote pada jawaban ini, meskipun salah representasi.
Lawrence Dol
1

Aturan cepat:

  • JSON: format data program-ke-program
  • YAML (JSON superset): format data manusia ke program
  • XML: format markup dokumen

Penjelasan:

Peran utama JSON adalah membuat serialisasi data berorientasi objek dengan menggunakan tipe data yang umum untuk sebagian besar bahasa pemrograman: daftar , hash , dan skalar , dan untuk tujuan itu, JSON tidak dapat dikalahkan atau diperbaiki. Dengan "JSON tidak memiliki nomor versi [karena] tidak ada revisi pada tata bahasa JSON yang diantisipasi". - Douglas Crockford (Tidak bisa mengalahkan itu sebagai tanda bahwa Anda melakukan pekerjaan Anda dengan sempurna)

XML pernah dijual sebagai format antar-perubahan data, tetapi pertimbangkan dua kasus penggunaan yang paling umum: Komunikasi klien-server asinkron (AJAX) - JSON telah cukup banyak menggantikan XML seluruhnya (X seharusnya benar-benar menjadi J), dan layanan web : JSON telah menjadikan XML alternatif yang berlebihan.

Hal lain yang digunakan secara luas XML adalah file data yang dapat ditulis / dibaca (?) Manusia untuk program, tetapi di sini Anda juga memiliki format yang lebih ringkas, lebih ramah-program, lebih ramah-manusiawi dalam YAML, superset JSON.

Jadi untuk representasi data, JSON mengalahkan XML. Apa yang tersisa untuk XML? Representasi dokumen konten campuran, yang memang dimaksudkan untuk itu .

Yarin
sumber
0

Sebagian besar teknologi web yang lebih baru bekerja menggunakan JSON, jadi alasan yang tepat untuk menggunakan JSON. Keuntungan besar adalah bahwa dalam XML Anda dapat mewakili informasi yang sama dalam berbagai cara yang berbeda, yang dalam JSON lebih mudah.

Juga JSON IMHO jauh lebih jelas daripada XML, yang menjadikannya keuntungan yang jelas bagi saya. Dan jika Anda bekerja dengan .NET, Json.NET adalah pemenang yang jelas untuk membantu Anda bekerja dengan JSON.

xmorera
sumber