私は Xcode 4.3.2 で作業しており、iOS 5 でアプリをビルドしています。
サーバーからのデータ ストリームを解析するために SBJson を使用することにしました。サーバーから有効な JSON 応答を受信していることを確認しました。私の質問は、クラス SBJsonStreamParser と SBJsonParser の背後にある設計に関するものです。
SBJsonParser では、メソッド「objectWithData」が JSON 応答から受信したデータを取得し、SBJsonStreamParserAccumulator を使用してデータのストリームを単一の JSON ドキュメントに追加しているようです。データ ストリームが 1 つのオブジェクトに収集されると、SBJsonStreamParser の「parse」メソッドによって解析されます。
より大きな JSON ドキュメントを要求するときに、いくつかの問題に遭遇しました。応答のサイズは妥当なようです (特に 9.4 KB の応答)。特定のサイズを超えるデータ ストリームを取得すると、SBJsonStreamParser が壊れているようです。パーサーは、応答が小さい場合 (~3KB) に成功しますが、応答が大きい場合 (~10KB) に失敗します。[{"id": .... 123}] のように見えるため、NSLog を使用して、小さいストリームと大きいストリームの両方をプルし、メソッドが完全な json ドキュメントを正常に受信していることを確認しました。問題はデータ ストリームが長すぎることだと確信しています。
SBJson を間違って使用しているのか、それとも単にパーサーの制限なのか疑問に思っています。SBJsonStreamParser がより大きな (しかし妥当な) データ ストリームに対してエラーをスローせず、完全な応答を解析し続けるように構成できるものはありますか?
前もって感謝します!