6

Web サービスから大きな JSON 文字列 (11MB) を取得しています。JSONKit を使用してデータを解析すると、アプリが 70MB に達し、メモリ警告が表示され、アプリがクラッシュします。

このデータを解析するにはどうすればよいですか?

4

4 に答える 4

3

あなたの最善の策は、イベント駆動型の解析をサポートする YAJL JSON パーサーを調べることです。次に、データ フィードに含まれる JSON を解析できるので、すべてを一度にメモリに保存する必要はありません。

https://github.com/gabriel/yajl-objc

申し訳ありませんが、実際にこの使用法を示すコード例は知りません。

于 2011-09-08T04:58:38.533 に答える
3

最も簡単な解決策は、サーバーから取得する json サイズを小さくすることです。それができない場合、巨大な JSON を解析する唯一の方法は、遅延評価を使用することです。

遅延評価をサポートするobjective-c用のJSONライブラリがあるとは思いません。ただし、実装することはできます。

于 2011-09-02T14:57:33.360 に答える
2

SBJson は、データ ストリームの解析をサポートしています。これにより、ドキュメントを少しずつ処理できるため、ドキュメント全体を保持する必要がなくなります。ディストリビューションには、これを使用する方法の 2 つの例が含まれています。最初にStreamParserIntegrationTest.mがあり、次にTweetStreamデモ アプリがあります。これは、HTTP ストリームを 1 日中座って解析し (許可する場合)、各ツイートが入ってくるたびに表示し、破棄する twitter アプリケーションです。

(免責事項:私は SBJson の作成者です。)

于 2012-09-07T13:41:32.943 に答える
1

11 mb は大きなデータであり、解決策はデータのサイズを最小限に抑えることだけです。JSON サポートは iOS にネイティブではありませんが、まさにこの目的のための優れたフレームワークがあります: http://code.google.com/p/json-framework/

このフレームワークは、未加工の JSON オブジェクトから Objective-C オブジェクト (NSArray、NSDictionary) への変換、およびその逆の変換をサポートしています。

于 2011-09-07T12:50:59.760 に答える