JSONからTypeScript型
JSON to TypeScript
JSONの実例からTypeScriptのインターフェースや型を推論し、省略可能なフィールドとユニオンをまとめます。
JSONのレスポンスを貼り付けると、それに合ったTypeScriptのインターフェースが出ます。先頭の1件だけを見るのではなく、標本のすべてのレコードを合わせて推論するため、一部にしかないフィールドは必須ではなく省略可能として出ます。コンパイルが通るだけの型と、実際に正しい型の違いはそこで分かれます。
サンプルJSON
.json ファイルを置く
このタブの中で読みます。アップロードはしません。
手元にある要素を全部入れてください。レコードが一つ増えるたびに推論が絞り込まれます。どれか一つに無いフィールドこそが、省略可能である根拠です。
TypeScript
使い方
手元にあるレコードをできるだけ多く貼り付けます
配列は先頭の要素だけでなく、すべての要素を読んで合わせます。レコードが3件あれば1件のときよりはるかに多くのことが分かります。どれか1件に欠けているという事実こそが、そのフィールドを省略可能にする根拠だからです。
ルートの型に名前を付けます
入れ子のオブジェクトは、それを保持しているキーの名前を取ります。配列なら単数形になるので、`users`からは`User`ができます。自分で名前を決める必要があるのはルートだけです。
出力の下にある件数を読みます
型の数、省略可能なフィールドの数、ユニオンの数、そして合わせたレコードの数が出ます。ユニオンが0より大きければ、あるフィールドが標本の中で違う種類の値を持っていたということなので、結果をコードベースに貼り付ける前に一度見ておく価値があります。
インターフェースをコピーします
出力は宣言順に並んだexport済みのインターフェースの束です。`.d.ts`に入れるか、そのレスポンスを受け取るfetchの隣にそのまま貼り付けられます。
よくある質問
これは検証ツールですか
違います。TypeScriptの型はビルド時に消えるので、ここで出たものは実行時に何も検査しません。サーバーが形を変えれば、型と食い違う値がそのまま入ってきます。実際に検査させたいなら、同じ画面でZodを出力し、それでパースしてください。
日付なのに`string`と出るのはなぜですか
JSONの上では文字列だからです。推論は構造だけを見ます。値が何であるかを報告するだけで、ISO 8601に見える文字列を`Date`にすべきだとは推測しません。その絞り込みは標本ではなく、コードベースについての決定です。
あるフィールドが文字列だったり数値だったりする場合はどうなりますか
`string | number`のようなユニオンになり、下のユニオンの数が増えます。多くの場合これは型の話ではなくAPI側の合図です。種類が変わるフィールドは、どこか下流で表に出るバグです。
標本からリテラル型は作られますか
作られません。3件のレコードで`status`がすべて`"active"`でも、出てくるのは`string`です。レコード3件は列挙型の根拠になりませんし、根拠の薄いリテラル型は1週間後にビルドを壊す種類のものです。
ここから渡せます
大文字・小文字変換
Case Converter
UPPER・lower・Title・Sentence・camelCase・snake_case・kebab-case・CONSTANT_CASEのあいだで表記を変えます。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
JSONからGo構造体
JSON to Go Structs
JSONの実例からjsonタグ付きのGoの構造体を作り、入れ子や繰り返しの型も扱います。
JSONからRust構造体
JSON to Rust Structs
JSONの実例からserde属性付きのRust構造体を作り、空や欠けうるフィールドはOptionに、キー名はsnake_caseへのrenameで処理します。
次の一手
このツールが出したものをそのまま受け取れる道具です。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
JSONからGo構造体
JSON to Go Structs
JSONの実例からjsonタグ付きのGoの構造体を作り、入れ子や繰り返しの型も扱います。
JSONからJSON Schema
JSON to JSON Schema
1つまたは複数の実例からJSON Schemaを推論し、見つかった形を合わせて1つにします。
JSONからZodスキーマ
JSON to Zod Schema
JSONの実例からZodのスキーマを組み立て、nullable・optional・列挙を推論します。
Base64エンコード・デコード
Base64 Encoder & Decoder
テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。
curlをコードに変換
curl to Code
curlのコマンドをfetch・axios・Pythonのrequests・Go・PHP・PowerShellのコードに変換します。