異なるオブジェクトを集める
ルートはオブジェクト、または空でないオブジェクト配列にします。配列なら要素のRootを生成するので[Root].selfをデコードします。ネストした配列も全要素が対象です。
型定義の生成
フィールドのないレコードも加えると、Optionalの推論を確認できます。
解析と生成はこのブラウザ内で行います。入力は送信・保存しません。
ルート配列は要素Rootを定義します。[Root].selfをデコードしてください。
構造体2件・Optionalプロパティ2件
JSONからSwiftでモデルを起こすときは、成功応答だけでなく項目が省略された例も用意してください。配列全体を調べるため、先頭の一件にはない違いも構造体に反映されます。
Codable自動生成は仕様書の代わりにはなりません。Swift構造体とCodingKeysを土台に、アプリ側で必須条件や将来のレスポンスを確認します。
JSONからSwiftは同じ配列位置にあるオブジェクトを統合します。キーの欠落やnullはOptionalに反映し、常に存在する値は具体的な型を維持します。
日時らしい文字列も初期設定ではStringです。ISO推論を選ぶと、条件を満たす日時だけがDateと専用デコーダーにつながります。
ルートはオブジェクト、または空でないオブジェクト配列にします。配列なら要素のRootを生成するので[Root].selfをデコードします。ネストした配列も全要素が対象です。
snake_caseや記号を含むキーにはCodingKeysを残してください。原名維持とcamelCaseを選べます。ISO推論はタイムゾーン付きの完全な日時で、小数秒は三桁までです。
自動生成は編集後350msで実行します。オフではボタンかCtrl/Cmd+Enterを使います。変更中は出力操作が無効です。サンプルと消去は文字数つきプレビューで確認し、適用後は一度戻せます。
JSONからSwiftはvarプロパティとCodable構造体を出力します。空でない子オブジェクトには補助構造体、空のオブジェクトには辞書、混在した値には再帰的なJSONValueを使います。
整数表記の値がすべて符号付き64ビット内ならInt64です。小数、指数、大きな整数が含まれる数値群はFoundation.Decimalになります。JavaScriptのNumberを途中に挟みません。
欠落またはnullが観測されたプロパティだけをOptionalにする設定と、全項目をOptionalにする設定があります。合成Codableでは欠落もnullもnilになり、エンコード時は通常その項目が省略されます。
makeJSONDecoder()は既定のキー戦略を使用します。Dateがあれば小数秒あり・なしのISO8601DateFormatterを試します。ISO文字列へ再出力する場合はJSONEncoder側の日時戦略を別に指定します。
このページはソースを生成するだけです。JSONからSwiftの開発時には実際にSwiftでコンパイルしましたが、ユーザーのブラウザーではSwiftを実行しません。ダウンロード後に対象プロジェクトで確認してください。
どちらもOptionalとして推論され、合成デコードではnilになります。エンコードでは通常そのプロパティが消えます。欠落・null・値の三状態が必要なら独自のCodable処理を追加してください。
camelCaseまたは合法な原名を維持する方式で名前を整えます。記号や予約語、衝突は改名し、CodingKeysで元キーへ対応させます。対応を切って改名が必要になる入力は拒否します。
はい。空でない子オブジェクトは別の構造体になり、配列は全要素を統合します。空オブジェクトは辞書、混在値はCodableに適合する再帰的なJSONValueになります。
ISO推論では小数秒を三桁まで認識し、生成するmakeJSONDecoder()が小数秒あり・なしを順に試します。より細かい日時はStringに留めます。Dateから再エンコードする形式は別に設定してください。
推定結果に改善点がありますか?