まず、AndroidプロジェクトにMoshiとRetrofitを導入する方法から始めましょう。まず、アプリのbuild.gradleファイルに以下の依存関係を追加します。
dependencies {
// Moshi
implementation 'com.squareup.moshi:moshi:1.12.0'
implementation 'com.squareup.moshi:moshi-kotlin:1.12.0'
// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-moshi:2.9.0'
}
これにより、MoshiとRetrofitのライブラリがプロジェクトに組み込まれます。
次に、Moshiを使用してJSONデータをパースする方法を見てみましょう。Moshiでは、データクラスとJSONの間で変換を行うためのアノテーションを使用します。例えば、以下のようなデータクラスがあったとします。
data class User(val name: String, val age: Int)
このデータクラスをJSONに変換するには、MoshiのJsonAdapter
を使用します。
val moshi = Moshi.Builder().build()
val jsonAdapter: JsonAdapter<User> = moshi.adapter(User::class.java)
val userJson = "{\"name\":\"John\", \"age\":30}"
val user: User? = jsonAdapter.fromJson(userJson)
上記のコードでは、MoshiのJsonAdapter
を使用してJSONをデータクラスに変換しています。
次に、Retrofitを使用してREST APIとの通信を行う方法を見てみましょう。Retrofitでは、APIのエンドポイントを定義し、リクエストとレスポンスの形式を指定します。例えば、以下のようなAPIインターフェースがあったとします。
interface ApiService {
@GET("users")
suspend fun getUsers(): List<User>
}
このインターフェースを使用してAPIリクエストを行うには、RetrofitのRetrofit.create()
メソッドを使用します。
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(MoshiConverterFactory.create(moshi))
.build()
val apiService: ApiService = retrofit.create(ApiService::class.java)
val users: List<User> = apiService.getUsers()
上記のコードでは、RetrofitのRetrofit.create()
メソッドを使用してAPIサービスのインスタンスを作成し、getUsers()
メソッドを呼び出しています。
以上が、Androidアプリ開発におけるMoshiとRetrofitの基本的な使用方法です。Moshiを使用してJSONデータをパースし、Retrofitを使用してREST APIとの通信を行うことができます。これらのライブラリの組み合わせは、効率的かつシンプルなデータの受け渡しを実現するために役立ちます。