Tool Kumarのツール

JSONをKotlinのデータクラスに変換

サンプルのJSONを、kotlinx.serialization用のデータクラスに変換します。ネストしたオブジェクトには専用のクラスが作られ、配列はListになり、名前を変えたフィールドは@SerialNameで元のJSONキーを保持します。

このツールの使い方

  1. フィールドが異なるレコードも含めて、代表的なレスポンスを貼り付けます。
  2. 生成された出力を確認し、必要に応じてルート名を変更します。
  3. コードをコピーまたはダウンロードし、型がAPI仕様と合っているか確認します。

実行例

この出力は組み込みの変換機能で生成したものです。2つのitemのpriceからは浮動小数点数のフィールドが、nullと文字列のnoteからはnull許容のフィールドが推論されます。

入力

{
  "user-id": 42,
  "profile": {
    "city": "London",
    "created_at": "2026-10-14T09:00:00Z"
  },
  "items": [
    {
      "price": 12,
      "note": null
    },
    {
      "price": 12.5,
      "note": "gift"
    }
  ]
}

出力

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class Root(
    @SerialName("user-id") val userId: Long,
    val profile: Profile,
    val items: List<Item>,
)

@Serializable
data class Profile(
    val city: String,
    @SerialName("created_at") val createdAt: String,
)

@Serializable
data class Item(
    val price: Double,
    val note: String? = null,
)

AndroidでAPIレスポンスをデコードする

アプリでKotlin serializationのコンパイラプラグインを有効にし、kotlinx.serializationのJSON依存関係を追加します。生成されたRoot型をJson.decodeFromStringで使います。

ignoreUnknownKeysを設定すると、サーバー側で新しいフィールドが追加されても失敗しません。未知のフィールドを許容するAPIの方針である場合にだけ設定してください。

import kotlinx.serialization.json.Json

val json = Json { ignoreUnknownKeys = true }
val model = json.decodeFromString<Root>(responseBody)

オプションと注意点

  • 各データクラスに@Serializableを付け、kotlinx.serializationのアノテーションをインポートします。Moshiの@JsonやGsonの@SerializedNameは出力しません。
  • 整数はLong、小数はDouble、nullのみや型が混在する値はJsonElementになります。null許容フィールドのデフォルト値はnullです。
  • 符号付き64ビットの範囲を超える整数はDoubleになり、精度が失われることがあります。識別子を正確に保持するには、文字列かカスタムシリアライザーを使ってください。
  • 日付の文字列はStringのままです。1つのサンプルだけでは、あるフィールドがすべてのAPIレスポンスで必須かどうかは判断できません。

標準でプライバシーを保護

ドキュメントはこのブラウザー内に残ります。Tool Kumarは、解析、変換、ダウンロードファイルの作成を端末内で行います。アカウント登録やアップロードの手順はありません。

JSONをKotlinのデータクラスに変換のよくある質問

どのKotlinシリアライゼーションライブラリを使いますか?
kotlinx.serializationです。出力には@Serializableが使われ、KotlinのプロパティがJSONキーと異なる場合は@SerialNameが追加されます。
Moshiでも使えますか?
フィールドの型はモデル作成の出発点として使えますが、アノテーションはkotlinx.serialization向けです。AndroidアプリでMoshiを使っている場合は、アノテーションを置き換え、Moshiのコード生成を設定してください。
存在しないフィールドやnullのフィールドはどう扱われますか?
配列内の一部のレコードに存在しないフィールドや、nullが見られたフィールドはnull許容になり、デフォルト値はnullになります。nullでない必須フィールドにはデフォルト値がありません。
Android向けのKotlin DTOを作成できますか?
はい。DTOとして使えるデータクラスを作成します。プロジェクトでは、Kotlin serializationのコンパイラプラグインとJSONランタイムを設定してください。

関連ツール

JSONをJavaのrecordに変換、JSONをDartのモデルに変換、JSON Schema生成。