OSS探訪GitHubでログイン

Kotlin・JavaのオブジェクトとJSONを型付きアダプターで相互変換する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
10,165
主要言語
Kotlin
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/01
ページ内ナビ

概要

MoshiはAndroid、Java、Kotlin向けのJSONライブラリです。JsonAdapterでJSONの読み書きを型へ結び付け、組み込み型、独自アダプター、Kotlin向けリフレクションまたはコード生成を組み合わせてデータ変換を構成できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

JsonAdapterでJSONと型の変換を一か所にまとめる

Moshiはプリミティブ型、コレクション、String、enumなどの組み込み型を扱い、モデル型ごとにJsonAdapterを取得してfromJson/toJsonを実行できます。読み込みと書き出しの規則を同じアダプターへまとめられます。

出典:[2]

独自アダプターとKotlin向けコード生成で変換規則を拡張する

@FromJsonと@ToJsonで独自の変換処理を追加できます。KotlinモデルではKotlinJsonAdapterFactoryによるリフレクションか、KSPを使うmoshi-kotlin-codegenを選択できます。

出典:[2][3]

向いている用途

Android/JVMのAPIレスポンスを明示的なモデルへ変換したい場合に向く

HTTP APIのJSONをKotlin/Javaモデルへ変換し、未知の値やnull、独自形式の扱いをアダプター単位で制御したいアプリやライブラリに適します。

出典:[2]

導入前の確認

Kotlinモデルの方式と2.xプレビュー版の互換性を分けて判断する

KotlinクラスはJava標準のリフレクションでは扱えず、コード生成またはKotlinJsonAdapterFactoryが必要です。安定版1.15.2とは別に2.0.0-alpha.1が公開されており、2.xはKotlin利用時にソース互換性へ影響する変更を含むため、プレビュー版を採用する場合は移行内容を確認してください。

出典:[2][4]

参考にした公式資料

  1. [1]square/moshi — GitHub repository(2026-10-06)
  2. [2]Moshi 1.15.2 — README(2026-10-06)
  3. [3]Moshi 1.15.2 — CHANGELOG(2026-10-06)
  4. [4]Moshi current CHANGELOG(2026-10-06)
  5. [5]Moshi Apache-2.0 license(2026-10-06)
編集部からの補足

Android/JVMでAPIモデルとJSONの境界を明示したい場合に扱いやすいライブラリです。KotlinモデルではリフレクションとKSPコード生成のどちらを採用するかを決め、2.xプレビュー版は1.x安定版と分けて評価してください。

3ステップで試す

  1. 1

    Moshi 1.15.2のKotlinアダプターを追加する

    安定版1.15.2を固定し、最小確認ではKotlinJsonAdapterFactoryを使うリフレクション方式を選びます。

    implementation("com.squareup.moshi:moshi-kotlin:1.15.2")
  2. 2

    Moshiと型付きアダプターを作る

    Kotlinモデル用のKotlinJsonAdapterFactoryを登録し、User型のJsonAdapterを取得します。

    import com.squareup.moshi.Moshi import com.squareup.moshi.adapter import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory data class User(val name: String) val moshi = Moshi.Builder().addLast(KotlinJsonAdapterFactory()).build() val adapter = moshi.adapter<User>()
  3. 3

    JSONをKotlinオブジェクトへ変換する

    fromJsonで最小JSONを読み込み、Userオブジェクトへ変換できることを確認します。

    println(adapter.fromJson("""{"name":"Moshi"}"""))
公式READMEで確認

成長

成長の推移 · 直近30日

10,165 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
19

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
10,165
Forks
811
Watchers
182
Open Issues
94
Contributors
83
所有者種別
Organization
主要言語
Kotlin
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/01

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?