カテゴリ: Kotlin 更新日: 2026/01/13

KotlinのAPIレスポンスをモデルクラスにマッピングする方法を徹底解説!初心者でも安心の入門ガイド

KotlinのAPIレスポンスをモデルクラスにマッピングする方法
KotlinのAPIレスポンスをモデルクラスにマッピングする方法

先生と生徒の会話形式で理解しよう

生徒

「Kotlinでインターネットからデータを取ってくるAPIってよく聞くけど、それをどうやって使いやすい形に変えるの?」

先生

「APIから送られてくるデータはJSONという形式で来ることが多いんだけど、それをKotlinのモデルクラスにマッピングすると扱いやすくなるんだ。」

生徒

「モデルクラスって何ですか?」

先生

「簡単に言うと、データを入れるための型付きの箱みたいなものだよ。じゃあ実際にどんな風に使うのか、ゆっくり説明していくね。」

1. APIレスポンスとモデルクラスとは?

1. APIレスポンスとモデルクラスとは?
1. APIレスポンスとモデルクラスとは?

Kotlin(ことりん)でAPI(エーピーアイ)と連携するとき、サーバーから受け取るデータはほとんどの場合「JSON(ジェイソン)」形式で送られてきます。これは見た目がちょっとコードに似たテキストの形式です。

例えば、以下のようなJSONがあります:


{
    "name": "Taro",
    "age": 25
}

このJSONの内容をKotlinで使いやすくするために、「モデルクラス」を作って、そこに自動的にデータを入れてくれる仕組みを使います。これを「マッピング」と呼びます。

2. モデルクラスを作ってみよう

2. モデルクラスを作ってみよう
2. モデルクラスを作ってみよう

Kotlinでモデルクラスを作るときは、「data class(データクラス)」という便利な仕組みを使います。

先ほどのJSONに対応するモデルクラスは、次のようになります:


data class User(
    val name: String,
    val age: Int
)

このUserクラスは、nameが文字列(String)、ageが整数(Int)になっています。JSONのキーと一致するようにプロパティの名前をつけることが重要です。

3. JSONをモデルクラスに変換するには?

3. JSONをモデルクラスに変換するには?
3. JSONをモデルクラスに変換するには?

Kotlinでは、JSONをモデルクラスに変換(パース)するために「ライブラリ」という道具を使います。代表的なものにGsonMoshiなどがあります。ここでは、Googleが作ったGsonを使って説明します。

まず、Gsonライブラリをプロジェクトに追加します。Gradleファイルに次のように書きます:


dependencies {
    implementation("com.google.code.gson:gson:2.10.1")
}

次に、実際にJSON文字列をUserクラスに変換してみましょう。


import com.google.gson.Gson

fun main() {
    val json = """{ "name": "Taro", "age": 25 }"""
    val gson = Gson()
    val user = gson.fromJson(json, User::class.java)

    println("名前: ${user.name}, 年齢: ${user.age}")
}

このコードでは、fromJsonという関数を使ってJSONをUserクラスに変換しています。

4. 出力結果を確認しよう

4. 出力結果を確認しよう
4. 出力結果を確認しよう

上記のコードを実行すると、次のように出力されます。


名前: Taro, 年齢: 25

このように、サーバーから送られてきたJSON形式のデータが、Kotlinのモデルクラスに自動で変換されて使いやすくなります。

5. モデルクラスの注意点と豆知識

5. モデルクラスの注意点と豆知識
5. モデルクラスの注意点と豆知識

モデルクラスのプロパティ名は、JSONのキーと完全に一致していないと正しくマッピングできません。たとえばJSONが"user_name"なのにモデルクラスがuserNameだとエラーになることがあります。

そんなときは、Gsonのアノテーション(特別な指定)を使って対応します:


import com.google.gson.annotations.SerializedName

data class User(
    @SerializedName("user_name") val userName: String,
    val age: Int
)

@SerializedNameを使えば、JSONの名前とKotlinのプロパティ名が違っていてもちゃんとマッピングできます。

6. KotlinでAPIを扱うメリットとは?

6. KotlinでAPIを扱うメリットとは?
6. KotlinでAPIを扱うメリットとは?

KotlinでAPIを使ってサーバーと通信し、そのレスポンスをモデルクラスにマッピングすることで、データの取り扱いが非常に簡単になります。

手作業で1つ1つデータを取り出す必要がなくなり、プログラムの読みやすさや安全性もアップします。

実際のAndroidアプリやWebシステムでも、この方法は非常によく使われています。

7. もっと実践的な使い方は?

7. もっと実践的な使い方は?
7. もっと実践的な使い方は?

今回の例は簡単なものでしたが、実際には「配列(リスト)」や「入れ子のJSON(ネスト)」などもよく出てきます。そういった場合でも、モデルクラスを工夫することで、複雑なデータ構造を扱えるようになります。

例えば、複数のユーザーを受け取る場合はこうです:


[
    { "name": "Taro", "age": 25 },
    { "name": "Hanako", "age": 30 }
]

この場合は、List<User>の形で受け取ればOKです。


val json = """[{"name":"Taro","age":25},{"name":"Hanako","age":30}]"""
val users: List<User> = gson.fromJson(json, Array<User>::class.java).toList()
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
New2
Kotlin
Kotlinのコーディング規約(公式スタイルガイド)とは?読みやすいコードを書くための基本ルール
New3
Kotlin
Kotlinの関数型を整理するパッケージ・ファイル構造の例を初心者向けにやさしく解説!
New4
Swift
Swiftデータ型まとめ|String・Int・Bool・Arrayの基本を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
No.2
Java&Spring記事人気No2
Go言語
Go言語のWebアプリにおけるセキュリティベストプラクティス集
No.3
Java&Spring記事人気No3
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.4
Java&Spring記事人気No4
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.5
Java&Spring記事人気No5
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.6
Java&Spring記事人気No6
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.7
Java&Spring記事人気No7
Kotlin
Kotlinのgetter・setterのカスタマイズ方法をわかりやすく解説!初心者向け完全ガイド
No.8
Java&Spring記事人気No8
Kotlin
Kotlinのインストール方法まとめ!Windows・Mac・Linux別にステップ解説