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.

tomute
sumber
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.

John
sumber
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.

bontoJR
sumber
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.

Roma
sumber
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.

Arvind
sumber
2

Lihat posting ini . <30 karakter>

berec
sumber
2
Bahkan lebih baik, lihat versi terbaru di sini psionides.jogger.pl/2010/12/12/… (spoiler: JSONKit menang).
Kuba Suder
2
Meskipun ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Bill the Lizard
0

Jika Anda mencari serializer dari NSObject ke JSON dan sebaliknya, Anda mungkin ingin checkout OBJC JSONSerializer

Mahadevan Sreenivasan
sumber
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

codeclash
sumber