Perbandingan JSON Parser untuk Objective-C (Kerangka JSON, YAJL, TouchJSON, dll)


142

Sejauh yang saya tahu, ada tiga Parser JSON untuk Objective-C, Framework JSON , YAJL , dan Touch JSON . Kemudian, ketiganya akan memiliki karakteristik sendiri.

Sebagai contoh:
YAJL dapat digunakan sebagai parser gaya SAX.
Kerangka JSON memiliki sejarah yang relatif panjang dan banyak digunakan.
Sentuh JSON mem-parsing NSData bukannya NSString.

Selain itu, sejauh yang saya uji, hasil perbandingan kinerja adalah sebagai berikut:
[cepat] YAJL> JSON Framework> Sentuh JSON [lambat].

Jika Anda mengetahui pro dan kontra dari parser JSON ini, dapatkah Anda memberi tahu saya?
Terakhir, jika Anda tahu JSON Parser lainnya, tolong beri tahu saya.


1
Voting saya! Ini pertanyaan yang bagus. Sarankan beberapa pakar menjawab pertanyaan ini. Saya telah menggunakan JSON Framework selama ini, tetapi ya, saya ingin mengetahui pro dan kontra dari parser lain.
Chintan Patel

Terima kasih Chintan. Saya juga menggunakan Kerangka JSON dan tidak mengeluh. Tapi, saya berharap seseorang bisa memberi kita jawaban yang bagus.
tomute

5
Bagaimana dengan pengurai JSON streaming untuk Obj-C? Saya ingin memiliki pengurai yang akan memberi tahu itu mendelegasikan ketika objek baru telah diuraikan, misalnya ketika Anda mengunduh JSON besar dari server, Anda bisa mulai memproses bagian yang telah diterima. Mungkin juga menurunkan jejak memori.
Martijn Thé

YAJL akan menjadi apa yang Anda inginkan. rel.me/2009/06/15/yajl-json-parser-objective-c-bindings
tomute

1
Sebuah komprehensif tinjauan .
ohho

Jawaban:


59

Jika Anda mencari kecepatan, lihat JSONKit . Ini (biasanya) jauh lebih cepat daripada perpustakaan JSON yang sudah disebutkan, seringkali urutan besarnya lebih cepat. Dan karena itu "cache objek baru-baru ini dipakai", itu akan (sekali lagi, biasanya) menggunakan lebih sedikit memori juga.


2
Saya dapat mengkonfirmasi ini :) Dalam pengujian saya, JSONKit hampir dua kali lebih cepat dari YAJL dan 50% lebih cepat dari JSON Framework, tetapi ternyata data yang saya gunakan untuk tes ini adalah semacam skenario kasus terburuk untuk JSONKit.
Kuba Suder

2
Kedua itu. Ingatlah untuk mengatur flag NS_BLOCK_ASSERTIONS di build Rilis Anda. Bahkan semakin meningkatkan kecepatan.
DenTheMan

1
AFAICT JSONKit tidak mendukung parsing berbasis aliran, jadi jika itu masalah Anda mungkin ingin pergi dengan json-framework atau YAJL.
Frank Schmitt

JSONKit untuk kinerja. Referece: ulasan komprehensif oleh cocoanetics.com.
ohho

2
Sampai sekarang, sepertinya JSONKit telah ditinggalkan oleh penulis. Ada beberapa masalah dengan versi terbaru XCode, banyak permintaan tarik untuk memperbaikinya, dan tidak ada satupun yang diterima.
Luke The Obscure

12

Mempertimbangkan perbandingan yang saya lakukan , perpustakaan tercepat adalah JSONKit, diikuti oleh NSJSONSerialization (sekarang API publik) dan NextiveJSON. SBJSON dan TouchJSON sedikit lebih lambat dari 3 perpustakaan sebelumnya.

Perbandingan telah dilakukan menggunakan iPhone 4S dengan iOS 5.0.1.


1
Pilih untuk menyebutkan bahwa NSJSONSerialization adalah bagian dari API publik! Saya akan tetap dengan ini, karena tidak akan ada masalah dengan pemeliharaan.
Johannes

dito. NSJSONSerialisasi , bagi saya, adalah cara yang masuk akal - setidaknya untuk menargetkan iOS 5.0 ke atas.
Quintin Willison

Tautan dalam jawaban rusak. Harap perbaiki
Ossir

5

Ada juga parser ini :

Saya tidak ingat bagaimana saya menemukan yang satu ini, tetapi terlihat ringan dan sederhana, jadi saya pikir itu sesuai dengan kebutuhan saya. Saya acara bercabang itu untuk menambahkan inisialisasi dari NSData. Karena saya perlu mengurai respons kecil, saya tidak peduli dengan kinerja. Akan menarik untuk mengetahui bagaimana kinerjanya.


Ini adalah parser JSON yang paling ringan dan sederhana yang saya gunakan sejauh ini, sangat direkomendasikan.
Kelvin

Wow, buat hariku. Pengurai yang sederhana dan elegan!
thandasoru

3

Saya pikir JSONKit lebih cepat dari YAJL dan YAJL lebih cepat daripada Touch JSON dan kelas iOS5 NSJSONSerialisasi kelas jauh lebih cepat. NSJSONSerialisasi tidak perlu menggunakan API pihak ketiga mana pun.




0

Mengapa tidak melihat tolok ukur akosma pada parser di mana ia membandingkan berbagai jenis parser. Jika satu parser tidak ada, Anda dapat menambahkannya ke dalam tes, karena kodenya adalah open source.

iPhoneWebServicesClient

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.