0

私は 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 がより大きな (しかし妥当な) データ ストリームに対してエラーをスローせず、完全な応答を解析し続けるように構成できるものはありますか?

前もって感謝します!

4

1 に答える 1

1

実際には、objectWithData:後方の仕組みがあります。SBJsonStreamParserAccumulator解析されていないデータ ストリームではなく、解析された出力を蓄積するために使用されます。

于 2012-09-26T22:26:57.530 に答える