実際のペイロードからJSON Schemaの草案を作る
スキーマを手で書くと自分のデータを想像で書きがちです。実際のJSONからdraft 2020-12のスキーマを推論し、そこから締めていきます。
このガイドで使う道具
やりたいこと
APIのレスポンスや設定の塊など、動いているJSONがあり、検証やドキュメント用のスキーマが必要です。構造はすでに存在しており、手で書き写すのは転記作業です。
構造を推論する
サンプルを貼って生成します。各オブジェクトはpropertiesマップになり、配列は要素全体をマージしたitemsスキーマになり、スカラーは整数と数値を区別して記録されます。
- format検出をオンにすると文字列にdate-time・date・uuid・email・uriが付きます。
- requiredにはその型のすべてのオブジェクトに存在したキーだけが入ります。
具体例
name・email・2つの文字列タグの配列・nullのmiddle_nameを持つユーザーレコードは、それぞれのプロパティに展開されます。tagsはitems.type "string"、middle_nameはtype "null"になり、format検出をオンにすればemailに"format": "email"が付きます。
草案として扱う
推論が見るのは「存在したもの」で「許されるもの」ではありません。サンプルでnullだったフィールドが本来文字列であることも、サンプルに無かった任意キーもあります。出力はサンプルの記録として読み、実際の契約が緩い部分は型を広げてください。
- 入力500KBまで。サンプルは解析されるだけで送信されません。
- formatはヒューリスティックです。メールに見える文字列は、APIがただの不透明な文字列として扱う場合でもemailと付きます。