Tool Kumarのツール
JSONをKotlinのデータクラスに変換
サンプルのJSONを、kotlinx.serialization用のデータクラスに変換します。ネストしたオブジェクトには専用のクラスが作られ、配列はListになり、名前を変えたフィールドは@SerialNameで元のJSONキーを保持します。
このツールの使い方
- フィールドが異なるレコードも含めて、代表的なレスポンスを貼り付けます。
- 生成された出力を確認し、必要に応じてルート名を変更します。
- コードをコピーまたはダウンロードし、型が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ランタイムを設定してください。