←ツールホーム/

JSON to Swift Codable Struct Converter (iOS / macOS モデルジェネレーター)

任意のJSONペイロードを、カスタムCodingKeysマッピング、null許容プロパティのオプショナル化、ネストされた構造体の抽出に対応した型安全なSwift Codable structへ変換します。

変換元JSONペイロード
784 chars
Swift Codableモデルが正常に生成されました。
生成されたSwiftモデル
import Foundation


public struct UserResponse: Codable, Sendable {
    public let `id`: String
    public let firstName: String
    public let lastName: String
    public let emailAddress: String
    public let isActiveMember: Bool
    public let creditBalance: Double
    public let loginCount: Int
    public let avatarUrl: String?
    public let createdAt: String
    public let addressInfo: AddressInfo
    public let tagList: [String]
    public let securityRoles: [SecurityRole]
    public let preferences: Preferences

    public enum CodingKeys: String, CodingKey {
        case `id`
        case firstName = "first_name"
        case lastName = "last_name"
        case emailAddress = "email_address"
        case isActiveMember = "is_active_member"
        case creditBalance = "credit_balance"
        case loginCount = "login_count"
        case avatarUrl = "avatar_url"
        case createdAt = "created_at"
        case addressInfo = "address_info"
        case tagList = "tag_list"
        case securityRoles = "security_roles"
        case preferences
    }
}

public struct Preferences: Codable, Sendable {
    public let darkModeEnabled: Bool
    public let notificationFrequency: String
    public let backupIntervalDays: Int

    public enum CodingKeys: String, CodingKey {
        case darkModeEnabled = "dark_mode_enabled"
        case notificationFrequency = "notification_frequency"
        case backupIntervalDays = "backup_interval_days"
    }
}

public struct SecurityRole: Codable, Sendable {
    public let roleId: String
    public let displayLabel: String
    public let accessLevel: Int
    public let permissions: [String]

    public enum CodingKeys: String, CodingKey {
        case roleId = "role_id"
        case displayLabel = "display_label"
        case accessLevel = "access_level"
        case permissions
    }
}

public struct AddressInfo: Codable, Sendable {
    public let streetLine1: String
    public let postalCode: String
    public let cityName: String
    public let countryCode: String

    public enum CodingKeys: String, CodingKey {
        case streetLine1 = "street_line1"
        case postalCode = "postal_code"
        case cityName = "city_name"
        case countryCode = "country_code"
    }
}
Target: iOS 13+ / macOS 10.15+ / watchOS 6+Swift 5.9+ / Swift 6 Sendable
生成された構造体数4
マッピングされたプロパティ数24
JSONペイロードサイズ24
技術リファレンス&アーキテクチャガイド

JSON to Swift Codable Struct Converter (iOS / macOS モデルジェネレーター) — リファレンスガイド

任意のJSONペイロードを、カスタムCodingKeysマッピング、null許容プロパティのオプショナル化、ネストされた構造体の抽出に対応した型安全なSwift Codable structへ変換します。

主要パラメータ&設定項目

rootStructNameString

トップレベルのSwift構造体に使用する識別子(例: 'UserResponse' や 'PayloadRoot')。

keyDecodingStrategyEnum (useCamelCase | convertFromSnakeCase | customCodingKeys)

プロパティ名のマッピング方針を決定します。'customCodingKeys' は snake_case のキーを camelCase のプロパティに対応付ける明示的な CodingKeys enum の case を生成します。'convertFromSnakeCase' は JSONDecoder().keyDecodingStrategy が実行時に変換を行うことを前提とします。

accessLevelEnum (internal | public | open | fileprivate)

構造体、イニシャライザ、および合成される CodingKeys enum の先頭に付与されるアクセス修飾子。

generateIdentifiableBoolean

true の場合、'id' プロパティ(UUID、Int、または String)を含むモデルに SwiftUI の 'Identifiable' プロトコルを自動的に準拠させます。

nestedStructExtractionEnum (inline | separateFiles | flatNamespaced)

子オブジェクトを親構造体内の内部型として定義するか、独立したトップレベル構造体として生成するか、または個別ファイルへのエクスポート用として生成するかを指定します。

プロの活用テクニック&推奨設定

よくあるトラブルと解決策

`[String: Any]` 型のディクショナリフィールドを処理する際、Swift コンパイラが 'Type does not conform to protocol Decodable' エラーを出力する。

Swift の `Any` 型は `Decodable` に準拠できません。不均一なディクショナリ型を `AnyCodable` などの型安全な汎用ラッパーに置き換えるか、有効なスキーマバリアントに応じた関連値を持つ専用の struct/enum を定義してください。

null 許容または条件によって欠落する JSON 属性をパースする際に、実行時エラー `DecodingError.keyNotFound` や `DecodingError.valueNotFound` がスローされる。

`null` に評価される可能性があるプロパティや、特定のバックエンドレスポンスで省略される可能性があるプロパティは、すべてオプショナル(`Type?`)として宣言してください。合成された Codable のイニシャライザは、キーが存在しない場合や明示的に null の場合に自動的に `nil` を代入します。

同一の子構造体名を持つネスト構造体の抽出を行うと、コンパイラが 'Ambiguous reference to member CodingKeys' という警告を出す。

子構造体を親の配下に名前空間化(例: トップレベルの `Address` ではなく `User.Address`)するか、生成時に一意の構造体名プレフィックスを付与して、スコープ間でのシンボルの衝突を防止してください。

よくある質問 (FAQ)

▼

▼

▼

▼

関連するおすすめ開発ツール

すべてのツール →
JSON to Java Record, Lombok & Jackson POJO ジェネレーターdeveloper

JSONから型推論を行い、Jacksonの@JsonPropertyアノテーションを備えた慣用的なJava Record、Lombok @Dataクラス、または標準的なJava POJOを生成します。

ツールを開く→
JSON to C# .NET Record & Class Generator (System.Text.Json & Newtonsoft)developer

JSONペイロードを、System.Text.Jsonの[JsonPropertyName]やNewtonsoft.Jsonの属性を付与した、厳密に型付けされたC#のレコード、クラス、構造体へ変換します。

ツールを開く→
Nginx & Apache アクセスログパーサー(メトリクス、ステータスコード & GeoIP)developer

ローカル環境でNginxおよびApacheの生アクセスログを解析し、HTTPステータスコード分布、リクエスト頻出URL(Top URLs)、ユニーククライアントIP、帯域幅メトリクス、およびカスタム正規表現によるパターンマッチングを提供します。

ツールを開く→
GraphQL SDL to JSON Schema & OpenAPI コンバーターdeveloper

GraphQL SDL のスキーマ定義、型、クエリ、ミューテーションを、標準的な JSON Schema Draft-07 および OpenAPI コンポーネントスキーマへ直接変換します。

ツールを開く→
Crontab構文&Quartzスケジュール式 チートシートdeveloper

5フィールドPOSIX規格および6フィールドQuartz形式のcron式完全リファレンス。特殊マクロ、実行周期計算、多重起動防止策を徹底解説。

ツールを開く→
JavaScript正規表現(RegEx)構文仕様・チートシートdeveloper

ECMAScript準拠の正規表現構文、キャプチャグループ(名前付き・非キャプチャ)、置換トークン($1, $&)、先読み・後読みの技術解説。

ツールを開く→