JSON から Go 構造体・TypeScript 型を生成
JSON のサンプルから Go の構造体、TypeScript の interface や type、JSON Schema を生成します。省略可能なキー、null、日時も検出します。
ツールをここにピン留めできます。このブラウザに保存されます。
ツールをピン留めすると、そのステッカーがここに並びます。
JSON のサンプルから Go の構造体、TypeScript の interface や type、JSON Schema を生成します。省略可能なキー、null、日時も検出します。
このツールは JSON の値をたどり、各位置で見つかったものを記録します。配列の要素は 1 つの記述にまとめられます。一部のオブジェクトにないキーは省略可能になり、ときどき null になる値は null 許容になり、異なる種類の値を含む配列は、TypeScript ではユニオン型、Go では []any になります。
数値が整数になるのは、そのすべてのサンプルが小数点も指数もなしで書かれ、かつ符号付き 64 ビット整数に収まる場合だけです。それ以外は浮動小数点数になります。文字列が日時になるのは、すべてのサンプルが 2026-11-14T10:00:00Z のような RFC 3339 の日時である場合だけです。時刻のない日付は文字列のままです。
ネストした各オブジェクトには、そのキーにちなんだ型名が付きます。配列の要素の場合、キーが英語の規則的な複数形であれば単数形の名前にします。たとえば users からは User、categories からは Category になります。それ以外の場合は、後ろに Item を付けます。ネストした型をインライン化をオンにすると、ネストしたオブジェクトは親の中に直接書かれます。
フィールド名はエクスポートされる形にし、頭字語に関する Go の慣例に従います。たとえば user_id は UserID、html_url は HTMLURL になり、json タグには元のキーが残ります。整数は int になり、32 ビットに収まらないサンプルがあれば int64 になります。Go の仕様では int の幅が 32 ビットでもよいとされているためです。その他の数値は float64、日時は time.Time になります。1 と 1.0 の区別には意味があり、encoding/json では 1.0 を int フィールドにデコードできません。
省略可能なフィールドに omitempty を追加をオンにすると、一部のサンプルにないキーは、タグに omitempty が付き、型はそのままになります。null になり得るスカラーや構造体は *string のようなポインタになり、null とゼロ値が区別されます。スライスやマップは nil になれるので、ポインタは不要です。常に null の値は any になります。省略可能なネストした構造体や time.Time フィールドもポインタになります。omitempty は構造体の値を省略しないためです。列は gofmt と同じように揃えられます。
構造体のフィールドに対応付けられないキーもあります。空のキーや、カンマ・クォート・バックスラッシュを含むキーは、どの json タグでも指定できません。また、従来の encoding/json は文字、数字、一般的な記号以外を含むタグ名を無視するため、結合文字や絵文字を含むキーは、encoding/json/v2 に基づく実装でしか一致しません。サンプルにこのようなキーがある場合は、出力の下に一覧表示されます。
TypeScript では、省略可能なキーは ?:、null 許容の値は | null で書き、有効な識別子でないキーはクォートで囲みます。日時は string として型付けします。JSON.parse が返すのは文字列だからです。日時であることはコメントで示します。interface と型エイリアスのどちらの形式も同じ構造を表すので、コードベースで使っている方を選んでください。
JSON Schema の出力は draft 2020-12 に従います。すべてのサンプルにあるキーは required に列挙され、整数は integer、日時には format: date-time が付き、名前付きのオブジェクト型は $defs に置かれて $ref で参照されます。
サンプルが示すのは、あるドキュメントがどのような形だったかであり、API が送り得るすべてではありません。結果を使う前に、省略可能なフィールドと null 許容のフィールドを、API のドキュメントと照らし合わせて確認してください。
判断できるのは配列からだけです。1 つの配列内のオブジェクトがすべて同じキーを持っているとは限らない場合、少なくとも 1 つのオブジェクトにないキーが省略可能になります。単一のオブジェクトからは判断材料が得られないため、そのキーはすべて必須として扱われます。
数値が整数として型付けされるのは、そのすべてのサンプルが小数点も指数もなしで書かれ、64 ビット整数に収まる場合です。Go では int になり、32 ビットの範囲外のサンプルがあれば int64 になります。サンプルが 1 つでも 2.5 だったり 1.0 と書かれていたりすると、そのフィールドは Go では float64、JSON Schema では number になります。TypeScript ではすべて number です。
同じフィールドに null 以外のサンプルもあれば、型は null 許容になります。Go ではポインタになります(スライスやマップはもともと nil になれるので、そのままです)。TypeScript では null とのユニオン型、JSON Schema では null も受け付けるスキーマになります。サンプルが null だけの場合は実際の型がわからないため、Go では any、TypeScript と JSON Schema では null になります。
いいえ。型の生成はブラウザのタブ内の JavaScript で行われます。このツールが貼り付けた内容を含むネットワークリクエストを送ることはなく、サイトのセキュリティポリシーにより、ほかのホストへのリクエストはブロックされます。
専用のウィンドウで開き、オフラインでも使えます。
インストールするには、共有ボタンをタップして「ホーム画面に追加」を選びます。