そのサンプルを参考に、slim3-genが生成するメタクラスにjson変換を行うメソッドを追加する拡張、slim3-gen-jsonicを作ってみたので、紹介します。
使い方
- slim3-gen-jsonicのバイナリを、ここからダウンロードして下さい(現在最新版はslim3-gen-jsonic-1.0.5.jar)。
- 次に、jsonicのバイナリをjsonicのサイトからダウンロードして下さい(現在最新版はjsonic-1.2.4.jar)。
- public String modelToJson(Object model)
- public ModelClass jsonToModel(String json)
modelToJsonでモデルをJSON文字列に変換し、jsonToModelでその逆、JSON文字列をモデルに変換します。jsonToModelは、内部でJSONICを使っています。使い方は簡単、Metaクラスからこれらのメソッドを呼び出すだけです。
public void test(){ TestModelMeta m = TestModelMeta.get(); TestModel model = new TestModel(); String json = m.modelToJson(model); // model -> JSON TestModel model2 = m.jsonToModel(json); // JSON -> model }
対応している型
現在、以下の型に対応しています。- String(cipher=trueの場合、JSON出力時に暗号化されます), List<String>, Set<String>, SortedSet<String>
- short, Short, List<Short>, Set<Short>, SortedSet<Short>
- int, Integer, List<Integer>, Set<Integer>, SortedSet<Integer>
- long, Long, List<Long>, Set<Long>, SortedSet<Long>
- float, Float, List<Float>, Set<Float>, SortedSet<Float>
- double, Double, List<Double>, Set<Double>, SortedSet<Double>
ソースからのビルド
EclipseとGoogle Plugin for Eclipse、Subversionクライアント(Subclipse or subversive)が必要です。まず、slim3のリポジトリから、slim3とslim3-genをチェックアウトします。
次に、slim3-gen-jsonicのリポジトリから、slim3-gen-jsonic、slim3-gen-jsonic-testをチェックアウトします。
slim3-gen-jsonicに含まれているbuild.xmlを使ってビルドすると、slim3-gen-jsonicプロジェクトのtargetディレクトリに、jarファイルが生成されます(slim3-genの全クラスもこのjarに含まれています)。
slim3-gen-jsonic-testプロジェクトは、slim3プロジェクトを参照し、slim3-gen-jsonicプロジェクトが生成するjarをannotation processorとして参照しるので、このプロジェクト内にモデルクラスを作成すると、JSON変換機能を簡単に試せます。また、メタクラスはsrc_generatedディレクトリ内に生成されるようになっているので、実際にどんなメソッドが生成されているか確認できます。
jsonic単体と比べた利点
今のところ持っている機能だと、文字列の暗号化対応以外、jsonicそのものを使っても同じ効果が得られます。slim3-genに統合する形で機能を追加していく利点としては、- リフレクションを使わないので速い(但しある程度大きなモデルでも、数十ミリ秒の差でしょう)
- App Engine固有の型に対応しやすい(固有の型には今後対応していく予定です)
0 件のコメント:
コメントを投稿