JSON から GraphQL スキーマ(SDL)へ
JSON から GraphQL SDL のオブジェクト型を生成します。Int と Float の判別、非 null マーカー、リスト型、サンプルから推論した入れ子の型に対応。無料でブラウザー内で動作。
null 不可のフィールドには "!" が付きます。32 ビットを超える整数は Float に、混在または null のみの値はカスタムスカラー JSON になります。
すべてブラウザ内で実行されます。データがアップロードされることはありません。
関連ツール
すべて表示JSON から GraphQLとは?
JSON のサンプルから、GraphQL スキーマ定義言語(SDL)の type 宣言を生成します。必須の値には非 null マーカー ! が付き、配列はリスト型に、入れ子のオブジェクトは別々のオブジェクト型になります。
JSON から GraphQLの使い方
- JSON 入力 に JSON のサンプルを貼り付けます(サンプルを読み込む や ファイルを開く も使えます)。
- ルート型の名前 を設定します(既定は
Root)。 - 生成された GraphQL のコードをコピーするか、ダウンロード してファイルとして保存します。
例
{"id":1,"name":"A","tags":["x"]} type Root {
id: Int!
name: String!
tags: [String!]!
} JSON から GraphQLを使うべき場面
既存の JSON/REST サービスをラップする GraphQL API のスキーマを素描するときに使います。出力するのは出力型だけです。入力型、クエリ、ミューテーション、リゾルバーは別途書く必要があります。
JSON から GraphQLの仕組み
サンプルを再帰的にたどり、各位置で見つかった型を集めます。オブジェクトの配列は 1 つの型にまとめられ、一部の要素にないキーはオプショナル、どこかで null になるキーは null 許容になります。整数と小数が混在する場合は浮動小数点型になり、それ以外で型が混在する場合は動的な型にフォールバックします。入れ子のオブジェクトは名前付きの型になり(キーのパスカルケースで、配列のキーは単数形にします:orders → Order)、名前が衝突した場合は数字の接尾辞が付きます。GraphQL の出力では、整数は Int(GraphQL の Int は 32 ビットなので、32 ビットを超える値があれば Float)、小数は Float、文字列は String、真偽値は Boolean に対応します。サンプルで null だった値や欠けていた値は null 許容になります(! なし)。型が混在する値や null のみの値にはカスタムの JSON スカラーを使い、必要な場合は先頭で宣言されます。GraphQL の名前として有効でないフィールド名はキャメルケースに変換されます。
一般的な使用例
- REST API の上に置く GraphQL ゲートウェイのオブジェクト型を下書きする
- JSON データの形を SDL で文書化する
- サンプルデータからスキーマファーストの API 設計を始める
- REST のペイロードを既存の GraphQL スキーマと比較する
よくある質問
ID が ID 型ではなく Int になるのはなぜですか?
サンプルからは数値であることしか分かりません。識別子のフィールドなら ID! に変更してください。意味まではツールに分かりません。
JSON スカラーとは何ですか?
型が変わる値に使うカスタムスカラーです。サーバー側で、たとえば graphql-scalars などを使って定義する必要があります。
大きな整数が Float になるのはなぜですか?
GraphQL の Int は 32 ビット符号付きの値に限られ、それより大きな数は拒否されるため、Float に対応付けられます(またはカスタムの BigInt スカラーを使います)。