100% ローカル — データがブラウザの外に出ることはありません

JSONをKotlinに変換|そのまま貼れるdata classにする

JSONのサンプルをKotlinのdata classに変換します。プロパティ名はJSONの書き方のまま、必要な場所はバッククォートで囲まれ、貼ればそのまま通ります。

高速 プライベート Cookieゼロ

JSON 入力

Kotlin 出力

このツールの動作

JSON の標本が Kotlin の data class になります。オブジェクト一つにつき一つです。

{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
data class Root(
    val id: Long,
    val firstName: String,
    val address: Address,
)

data class Address(
    val city: String,
)

どのプロパティも val です。復号された荷は値だからです。data class には equals、hashCode、toString、そして copy() が付いてきます。最後のものが、何も書き換えずに一つの項目を変える方法です。

鍵は鍵のまま

Kotlin の識別子はバッククォートで囲めます。それだけで、JSON の鍵をそのまま保てます。

data class Root(
    val `content-type`: String,
    val `class`: Long,
    val `2fa`: Boolean,
)

class は予約語、content-type にはハイフン、2fa は数字始まり——バッククォートの中ではどれも関係ありません。kotlinx.serialization ではプロパティ名が JSON 名なので、注釈なしでこのまま復号できます。

Jackson や Moshi も探すのはプロパティ名なので、バッククォートの名前はそちらでも働きます。contentType のようにプロパティを改名すると決めたときだけ、鍵を指し直すために @JsonProperty("content-type") や @Json(name = "content-type") が要ります。

型と、そこに無い ?

  • 整数は Long、小数は Double になります。JSON の数値が問題なく運べる型です。
  • null と型の分からない値は Any? になります。疑問符が現れる唯一の場所であり、標本がそれを見せた唯一の場所でもあります。
  • 空の配列や型の混ざった配列は List<Any> になります。

ほかに null を許すものはなく、既定値もありません。ときどき無い項目は、あなたが付ける ? と = null です。二つ目の荷が、この荷には言えなかったことを教えてくれてからで結構です。

鍵が二つなら、プロパティも二つ

プロパティ名としてぶつかる二つの鍵は、混ぜずに分けます。二つ目に番号付きの接尾辞が付きます。バッククォートの名前が JSON 名そのものなので、ここで衝突が起きるのは稀です。繕いが避けられないときだけです。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

なぜプロパティ名が `` `content-type` `` とバッククォート付きなのですか。
Kotlin はバッククォートの中なら任意の識別子を許し、それが JSON の鍵をプロパティ名として保つ方法だからです。kotlinx.serialization では、プロパティ名がそのまま JSON 名です。ほかに要るものはありません。Jackson や Moshi で同じ結果を得るには、`@JsonProperty` や `@Json(name = …)` を手で足します。
項目は `val` と `var` のどちらがよいですか。
`val` です。復号された荷は値であって、入力用紙ではありません。すべてを可変にすると、その場でオブジェクトを書き換えておいて、今どの版を見ているのか分からなくなる書き方を招きます。本当に変える必要があるなら `copy()` が、一つの項目だけ変えた新しい実体を返します。data class はそのためにあります。
なぜ既定値がないのですか。
既定値は、鍵が無いことが何を意味するかについての主張であり、標本は無い鍵を決して見せないからです。`= null` を書けば、コード全体で「無い」が「null」になってしまいます。API を知っていれば足すのは一語です。当てにいくのは、誰もこの道具に頼んでいない判断です。

関連ツール