左側に Swift を貼り付けて "変換" をクリックしてください — JSON に変換しますSwift コードを貼り付け

このツールでできること

Swiftstruct を定義して Codable に準拠させたものの、playground やシミュレーターを立ち上げずに JSON だけ欲しい、という場面はよくあります。このツールはまさにそれを解決します。Swift をここに貼り付ければ、JSONEncoder も Xcode も Swift Package Manager も触らずに有効な JSON が返ってきます。単一の struct インスタンスでも、複数の型を含むファイル全体でも、ネストした配列や Optional を含むコードでも結果は同じです。すべてのプロパティが保持されたきれいな JSON ドキュメントになります。

このコンバーターは、Swift の値が JSONEncoder で実際にシリアライズされる挙動に沿って動作します。StringIntDoubleBool はそのまま対応する JSON 型にマップされます。[Item] 配列は JSON 配列に、[String: V] 辞書は JSON オブジェクトになります。Optional<T>nil の場合は JSON の null になります(エンコーダー戦略によっては省略されます)。UUID は標準的な 16 進文字列、Date は ISO-8601 文字列、URL は文字列として出力されます。raw value を持つ enum はその値を出力します — Foundation.JSONEncoder と同じ挙動です。

カスタム CodingKeys もそのまま尊重されます。JSON 用にプロパティ名を変更している場合(case shippingAddress = "shipping_address")、出力はリネーム後のキーを使います。ネストした Codable 型はインラインで展開されます。複数の struct をまとめて貼り付けると、それぞれが出力のトップレベルエントリになります。Swift が JSON をどうモデリングしているかもっと深く知りたい場合は、ソースコードは apple/swift にあり、Codable プロトコルのわかりやすい解説は Hacking with Swift にあります。

使い方

ステップは 3 つです。struct のインスタンス 1 つでも、モデルファイル丸ごとでも手順は同じです。

1

Swift を貼り付け(またはサンプルを読み込む)

左側のエディターに Swift をそのまま貼り付けてください。structclass関連値付き enum複数の型ネストした配列や辞書 — すべて問題なく扱えます。まずは現実的な例を見たい場合は Load Sample をクリックしてください。

import Foundation@available 属性を削除する必要はありません。Swift の構文をそのまま残してください — パーサーが適切に処理します。

2

「変換」をクリック

緑色の 変換 ボタンをクリックします。Swift を読み込み、すべてのプロパティとネストした型を保持したまま、JSON を一度に出力します。処理中は短いローディングインジケーターが表示されます。

3

JSON をコピー

右側のパネルにインデント付きの JSON が入ります。URLSession のテスト、MockURLProtocol のフィクスチャ、OpenAPI のサンプル、REST クライアントなどにそのままコピーしてください。これで完了です。

こんな場面で本当に助かる

iOS API のフィクスチャ

<code>URLSession</code> 呼び出し用のリクエスト struct があり、Postman やテスト用に JSON ペイロードが必要 — struct を貼り付けて JSON を取得し、次の作業に進めます。

モックサーバーのレスポンス

レスポンスの <code>Codable</code> 型を、モックサーバーや <code>MockURLProtocol</code>、録画済みレスポンスファイルに投入できる JSON に変換します。<code>JSONEncoder</code> の呼び出しは一切不要です。

Vapor / SwiftNIO バックエンドのテスト

20 個の <code>Content</code> 型を抱える Vapor サービスでも、encode を 1 行も書かずに統合テスト用の JSON シードファイルを生成できます。

ドキュメントと OpenAPI の例

実際のモデルから直接 OpenAPI 仕様や API リファレンス用の JSON 例を生成できるので、ドキュメントが常に同期した状態に保てます。

よくある質問

型は Codable に準拠している必要がありますか?

ツールが動作するために、コード上で実際に準拠している必要はありません — コンバーターは型の形を読み取って直接 JSON を生成します。実アプリでは、Codable(少なくとも Encodable)が JSONEncoder 経由でランタイムに同じ結果を得る方法です。

カスタム CodingKeys は反映されますか?

はい。型が enum CodingKeys: String, CodingKey をカスタム raw value 付きで定義していれば(例: case shippingAddress = "shipping_address")、出力はリネーム後のキーを使用します。

Optional、Date、UUID はどう扱われますか?

Optional<T>nil の場合は JSON の null になります。Date はデフォルトで ISO-8601 文字列として出力されます(JSONEncoder.DateEncodingStrategy.iso8601 と同じ)。UUID は標準的な 16 進文字列、URL は文字列になります。

関連値を持つ enum はどうなりますか?

raw value を持つ enum はその値を直接出力します。関連値を持つ enum はタグ付きオブジェクトとして出力されます — 関連値付きの case を Swift 自身がエンコードするときの形と同じです。

貼り付けたコードは保存されますか?

コードは変換のためにバックエンドへ送られますが、保存されません — ペイロードのログも取りません。機密性の高いコードは貼り付ける前に確認してください。

SwiftUI のモデルや property wrapper でも動きますか?

はい — @Published のような property wrapper は内部の値に展開されます。@Published プロパティを持つ ObservableObject クラスもきれいにシリアライズできます。SwiftUI 固有のビュー型はシリアライズ可能なデータではありませんが、ビューの背後にあるモデルは問題なく扱えます。

ほかに役立つツール

Swift → JSON はパズルのひとピースです。以下のツールと組み合わせるとさらに便利です: