Tool Kumarのツール

JSONをSwiftのモデルに変換

Codableに準拠したSwiftの構造体を生成します。プロパティ名がJSONと異なる場合はCodingKeysを追加するため、user-idのようなキーもuserIdにデコードされます。

このツールの使い方

  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 Foundation

struct Root: Codable {
    let userId: Int
    let profile: Profile
    let items: [Item]

    enum CodingKeys: String, CodingKey {
        case userId = "user-id"
        case profile, items
    }
}

struct Profile: Codable {
    let city: String
    let createdAt: String

    enum CodingKeys: String, CodingKey {
        case city
        case createdAt = "created_at"
    }
}

struct Item: Codable {
    let price: Double
    let note: String?
}

JSONDecoderでデコードする

生成されたRoot構造体をJSONDecoderで使います。Codableなので、同じモデルをJSONEncoderでエンコードすることもできます。

この出力では、キー戦略はデフォルトのままにしてください。CodingKeysには、created_atを含む元のJSONキーがすでに入っています。

let model = try JSONDecoder().decode(Root.self, from: responseData)
let encoded = try JSONEncoder().encode(model)

オプションと注意点

  • 整数はInt、小数はDouble、符号付き64ビットの範囲を超える整数はDecimalと推論されます。対象プラットフォームの制限と10進数の精度を確認してください。
  • nullや存在しないフィールドは、オプショナルなプロパティになります。nullのみ、または型が混在する場合は、必要に応じて生成されるJSONValueヘルパーを使います。
  • JSONValueは数値をDoubleとして保持するため、正確な金額や非常に大きなIDには明示的な型を使ってください。
  • 日付の文字列はStringのままです。フィールドをDateに変更する場合は、APIの形式に合わせてJSONDecoder.dateDecodingStrategyを設定してください。

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

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

JSONをSwiftのモデルに変換のよくある質問

クラスと構造体のどちらを生成しますか?
Codableに準拠した構造体を、letプロパティとネストしたモデル型付きで生成します。Foundationをインポートします。
CodingKeysはいつ追加されますか?
プロパティ名が変わる場合に、Swiftの識別子を元のJSONキーに対応付けるCodingKeysのenumを出力します。
nullはどう扱われますか?
nullが見られたフィールドや存在しないフィールドは、オプショナルなプロパティになります。不明な値や型が混在する値にはCodableなJSONValueのenumを使い、これは参照される場合にだけ追加されます。
JSONDecoderでそのまま使えますか?
はい。生成された構造体をプロジェクトにコピーし、DataからRoot.selfをデコードします。事前に、オプショナルなフィールドと日付の型を確認してください。

関連ツール

JSONをDartのモデルに変換、JSONをKotlinのデータクラスに変換、JSON Schema生成。