Objective-CのJSONパーサーの比較(JSONフレームワーク、YAJL、TouchJSONなど)


142

私の知る限り、Objective-C用の3つのJSONパーサー、JSONフレームワークYAJL、およびタッチJSONがあります。そして、これら3つは独自の特徴を持っています。

例:
YAJLはSAXスタイルのパーサーとして使用できます。
JSONフレームワークには比較的長い歴史があり、広く使用されています。
Touch JSONはNSStringではなくNSDataを解析します。

さらに、私がテストした限りでは、パフォーマンス比較の結果は次のとおりです:
[高速] YAJL> JSONフレームワーク>タッチJSON [低速]。

これらのJSONパーサーの長所と短所を知っているなら、教えていただけますか?
最後に、他のJSONパーサーを知っている場合は教えてください。


1
私の投票!これは素晴らしい質問です。いくつかの専門家がこれに答えるのが大好きです。私はずっとJSONフレームワークを使用していますが、他のパーサーの長所と短所を知りたがっています。
Chintan Patel、2010

チンタンありがとう。私もJSONフレームワークを使用しており、文句はありません。しかし、私は誰かが私たちに良い答えを与えることを願っています。
2010

5
Obj-CのストリーミングJSONパーサーはどうですか?新しいオブジェクトが解析されたときにデリゲートであることを通知するパーサーが必要です。たとえば、サーバーから大きなJSONをダウンロードしているときに、受信した部分の処理を開始できます。また、メモリフットプリントも低下する可能性があります。
MartijnThé10年

YAJLはまさにあなたが望むものです。rel.me/2009/06/15/yajl-json-parser-objective-c-bindings
07:07にtomute

1
包括的なレビュー
ohho

回答:


59

スピードを求めるなら、JSONKitを見てください。(通常)すでに述べたJSONライブラリーよりもはるかに高速で、多くの場合、桁違いに高速です。また、「最近インスタンス化されたオブジェクトキャッシュ」であるため、(通常は)使用するメモリも少なくなります。


2
私はこれを確認できます:)私のテストでは、JSONKitはYAJLのほぼ2倍、JSONフレームワークの50%高速でしたが、テストに使用したデータはJSONKitの最悪のシナリオの一種でした。
Kuba Suder 2010

2
第二に。リリースビルドでNS_BLOCK_ASSERTIONSフラグを設定することを忘れないでください。速度がさらに向上します。
DenTheMan、

1
AFAICT JSONKitはストリームベースの解析をサポートしていないため、それが問題である場合は、json-frameworkまたはYAJLを使用することをお勧めします。
フランクシュミット2011年

パフォーマンスのためのJSONKit。参照:cocoanetics.com による包括的なレビュー
ohho

2
現時点では、JSONKitが作成者によって放棄されているようです。最新バージョンのXCodeにはいくつかの問題があり、それを修正するための多数のプルリクエストがありますが、どれも受け入れられていません。
ルーク・ザ・オブスキュア2013

12

私が行った比較を考えると、最速のライブラリはJSONKitで、次にNSJSONSerialization(現在はパブリックAPI)とNextiveJSONが続きます。SBJSONとTouchJSONは、以前の3つのライブラリよりも少し遅いです。

比較は、iOS 4.0.1を搭載したiPhone 4Sを使用して行われました。


1
NSJSONSerializationがパブリックAPIの一部であることを言及することへの賛成投票!メンテナンスに支障はないので、こだわります。
ヨハネス

同上。NSJSONSerializationは、私にとっては、少なくともiOS 5.0以降をターゲットにするための賢明な方法です。
Quintin Willison 2013年

回答のリンクが壊れています。修正してください
Ossir 2015年

5

このパーサーもあります:

どうやってこれに出くわしたかは覚えていませんが、見た目は軽量でシンプルなので、自分のニーズに合っていると思いました。NSDataから初期化を追加するために、イベントをフォークしました。小さな応答を解析する必要があるため、パフォーマンスは気にしませんでした。しかし、それがどのように機能するかを知ることは興味深いでしょう。


これは、これまで使用した中で最も軽量でシンプルなJSONパーサーです。強くお勧めします。
ケルビン

うわー、私の日を作りました。このようなシンプルでエレガントなパーサー!
thandasoru 2011

3

JSONKitはYAJLよりも高速で、YAJLはTouch JSONよりも高速で、IOS5クラスのNSJSONSerializationクラスははるかに高速です。NSJSONSerializationは、サードパーティのAPIを使用する必要はありません。




0

さまざまな種類のパーサーを比較するパーサーに関するakosmaのベンチマークを見てみませんか。彼のコードはオープンソースなので、1つのパーサーが欠落している場合は、それをテストに追加することもできます。

iPhoneWebServicesClient

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.