0

次のようなツールを簡単に見つけることができます。

  • JSON を csharp モデル クラスに変換する
  • JSON を objc モデル クラスに変換する
  • JSON を Java の POJO に変換する

しかし、このプロセスの途中で、独自のトランスフォーマーを JSON からblahモデル クラスに展開しようとするとどうなるでしょうか。

JSON を非常によく理解し、自分のスタイルのモデル クラスを吐き出すという仕事の後半を行うために、プログラムで実装できるフックまたはコールバックを提供するだけのプログラミング フレームワークまたはツールはありますか?

この質問の背後にある私の動機は、JSONKit フレームワークに依存する ObjC モデル クラスを生成するのに役立つhttp://jsonpack.com/ModelGenerators/ObjectiveCを見つけたという事実ですが、依存する ObjC モデル クラスを生成したいと考えています。代わりに RestKit フレームワーク。

4

1 に答える 1

2

私の理解が正しければ、おそらく「SAX スタイル」のパーサーを探しているでしょう。つまり、パーサーから解析イベントを受け取り、これらのイベントを適切に処理するパーサー用のデリゲートのようなものを実装します。

したがって、デリゲートは、NSArray、NSDictionary、NSString などで構成される Foundation オブジェクトの階層である JSON 表現を作成する代わりに、特定のカスタム クラスの 1 つ以上のインスタンスを作成します。

これは実現可能ですが、そのような「SAX スタイル」のパーサー (NSJSONSerialization はそうではありません) を使用している場合は、確かにある程度の労力が必要です。ファウンデーション階層をいつでも他のオブジェクト (コア データ モデル オブジェクトなど) に「変換」できることに注意してください。(つまり、NSDictionary からオブジェクトを初期化します)。しかし、より精巧なアプローチは確かに高速です。

私が知っている SAX スタイルの API を持つ 2 つの Objective-C JSON パーサー フレームワークは、SBJson https://github.com/stig/json-framework/と JPJson https://github.com/couchdeveloper/JPJsonです。

後者のパーサー ライブラリ (JPJson) は、実際には、a) 解析と b) セマンティック アクションの実行という 2 つのタスクを分離することによって設計されています。既存の基本クラス「セマン​​ティック アクション」からサブクラス化し、解析イベントの処理に対応する独自の「ハンドラー メソッド」を作成してオーバーライドできます。

私は JPJson の作成者であり、現在新しい clang コンパイラ (C++11) と Xcode に対応するように更新しています。

于 2013-04-09T17:10:49.853 に答える