はじめに
モバイルアプリ開発では、WebAPIでJSONオブジェクトを取得することが多く、JSONオブジェクトをデータクラスに変換する処理が面倒になります。弊社アプリ開発では、AndroidでGSON、SwiftでUnboxを使用して、可能な限りこの作業を軽減するようにしています。
作業軽減を加速するために、JSONExportというMacOSアプリケーションを使用しています。
Githubはこちら
JSONExport : https://github.com/Ahmed-Ali/JSONExport
JSONExportとは
JSONExportはMacOS X用のアプリケーションで、JSONオブジェクトからコンバート用のクラスを自動生成することができます。
クラス生成時に次のような指定ができます。
- 保存前に生成されるクラスのプレビューが可能
- コンストラクタのみか、ユーティリティメソッドのみか、両方か、指定が可能
- Rootクラスの名前を指定可能
- 生成されるクラスのPrefixを指定可能
- Javaの場合、パッケージ名を指定可能
Version 1.0.3では、次の言語をサポートしています。
- Java for Android.
- Java for Realm Android.
- GSON for Android
- Swift Classes.
- Swift Classes for SwiftyJSON library.
- Swift Classes for Realm.
- Swift – CoreData.
- Swift Structures.
- Swift Structures for Gloss
- Swift Mappable Classes for ObjectMapper
- Swift Structures for Unbox
- Objective-C – iOS.
- Objective-C – MAC.
- Objective-C – CoreData.
- Objective-C for Realm iOS.
上記のうち、GSON for Android と Swift Structures for Unboxをコントリビュートしました。
使用方法
JSONExportはApp Storeで配布されていないため、Xcodeでビルドしアプリケーションを生成する必要があります。
Git Cloneでソース取得
ソースを取得します。
1 |
git clone https://github.com/Ahmed-Ali/JSONExport.git |
XcodeでArchive実行
Xcodeを起動し、 Product → Archiveを実行します。
Exportでアプリケーションを保存
Archiveが成功すると、次のような画面が表示されるので、Exportのボタンを押します。
次のような選択画面が表示されるので、Export as a macOS Appを選択してNextを押します。
ローカルに保存すると、アプリケーションが使用できるようになります。
JSONオブジェクトからコンバート用クラス生成
次のJSONオブジェクトを、GSON for Androidのコンバート用Javaファイルを生成します。
1 2 3 4 5 6 |
{ “id”: 1000, “user”:{ “name”:”cookbiz” } } |
Window左側のEntry your json dataにJSONオブジェクトを入力すると、Window右側に自動でクラス生成されます。
次のようなソースコードが生成されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
jp.cookbiz.test // // CookbizJsonTest.java // Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport import org.json.*; import java.util.*; import com.google.gson.annotations.SerializedName; public class CookbizJsonTest{ @SerializedName("id") private int id; @SerializedName("user") private CookbizUser user; public void setId(int id){ this.id = id; } public int getId(){ return this.id; } public void setUser(CookbizUser user){ this.user = user; } public CookbizUser getUser(){ return this.user; } } |
JSONオブジェクト中にオブジェクトが存在する場合、これも自動生成対象となりクラスを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
jp.cookbiz.test // // CookbizUser.java // Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport import org.json.*; import java.util.*; import com.google.gson.annotations.SerializedName; public class CookbizUser{ @SerializedName("name") private String name; public void setName(String name){ this.name = name; } public String getName(){ return this.name; } } |
右下隅っこのSaveボタンを押すと、ソースコードとして保存できます。
最後に
弊社アプリ開発では、GSONやUnbox以外にも多くのOSSを使用しています。無料ライセンスで公開されているものがほとんどで、その恩恵をうけてスピード開発が行えています。
OSSライブラリを使う以上、ただローカルで改変して使うのではなく、世界中でOSSを使う開発者が幸せになれるよう、コントリビュートすることを前提として使用するようチーム内で意識しています。
現在、クックビズでは新しいメンバーを募集しております!
このブログを書いているのはクックビズ株式会社の開発チームです。私たちと働いてみたいと思った方はWantedlyから話を聞きにきて下さいヽ(=´▽`=)ノ著者プロフィール
- クックビズ開発部 孤高のAndroider
最近書いた記事
Android2016.09.29JSONExportにコントリビュートしました
Android2015.09.09LinkedIn製AndroidセキュリティチェックTool、QARKを使ってみた
Android2015.06.09Android Design Support Libraryを使ってマテリアル化する
Android2015.02.23Android StudioでテストライブラリEspressoを使用する