JSON → Kotlin data class 変換ツール
JSONからKotlinのdata classを生成します。toJson・fromJsonヘルパー付きです。
JSONからKotlinのdata classを生成
Kotlinのdata classは、AndroidやJVMでJSONを扱うためのモデル型として最適です。このツールはオブジェクトごとにイミュータブルなvalプロパティを持つdata classを生成します。整数はLong、小数はDouble、配列はList<T>になり、ネストしたオブジェクトはそれぞれ独自のdata classになります。生成されるコードはKlaxonライブラリを使用し、toJsonメソッドとcompanionのfromJson関数を追加するため、1回の呼び出しでJSON文字列を型付きのオブジェクトに変換できます。
使い方
- Androidアプリが受け取るレスポンスなど、JSONサンプルを貼り付けます。
- ルートクラスの名前を入力します(例: Movie)。
- Klaxonの依存関係を追加し、クラスをパッケージ内の.ktファイルに貼り付けて、Movie.fromJson(jsonString)を呼び出します。
よくある質問
- kotlinx.serialization、Moshi、Gsonでもこのクラスを使えますか?
- はい。data classの宣言自体は純粋なKotlinです。Klaxonのヘルパーを削除し、kotlinx.serializationなら@Serializableのように、使用するライブラリのアノテーションを各クラスに追加してください。
- nullになり得るフィールドはどう生成されますか?
- サンプルの一部でnullまたは欠落しているフィールドは、String?のようなnull許容型になるため、Kotlinのnull安全性によって適切な処理が求められます。
- IntではなくLongなのはなぜですか?
- JSONの整数にはサイズの上限がないため、オーバーフローを避けられるLongを使っています。年や件数など値が小さいとわかっている場合は、プロパティをIntに変更してください。
例: JSONからKotlinへの変換
入力JSON
{
"id": 12,
"title": "Arrival",
"year": 2016,
"genres": ["sci-fi", "drama"],
"rating": 7.9
}生成されたKotlin(Movie)
// To parse the JSON, install Klaxon and do:
//
// val movie = Movie.fromJson(jsonString)
package quicktype
import com.beust.klaxon.*
private val klaxon = Klaxon()
data class Movie (
val id: Long,
val title: String,
val year: Long,
val genres: List<String>,
val rating: Double
) {
public fun toJson() = klaxon.toJsonString(this)
companion object {
public fun fromJson(json: String) = klaxon.parse<Movie>(json)
}
}