JSON から GraphQL スキーマ(SDL)へ

JSON から GraphQL SDL のオブジェクト型を生成します。Int と Float の判別、非 null マーカー、リスト型、サンプルから推論した入れ子の型に対応。無料でブラウザー内で動作。

null 不可のフィールドには "!" が付きます。32 ビットを超える整数は Float に、混在または null のみの値はカスタムスカラー JSON になります。

すべてブラウザ内で実行されます。データがアップロードされることはありません。

関連ツール

すべて表示

JSON から GraphQLとは?

JSON のサンプルから、GraphQL スキーマ定義言語(SDL)の type 宣言を生成します。必須の値には非 null マーカー ! が付き、配列はリスト型に、入れ子のオブジェクトは別々のオブジェクト型になります。

JSON から GraphQLの使い方

  1. JSON 入力 に JSON のサンプルを貼り付けます(サンプルを読み込む や ファイルを開く も使えます)。
  2. ルート型の名前 を設定します(既定は Root)。
  3. 生成された 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 スカラーを使います)。

他のカテゴリを見る