JSONからGo構造体
JSON to Go Structs
JSONの実例からjsonタグ付きのGoの構造体を作り、入れ子や繰り返しの型も扱います。
例の文書から`json:`タグの付いたGoの構造体を作ります。レスポンスの本文を`encoding/json`がアンマーシャルできる形にします。フィールド名はexportされる形にキャメルケース化し、元のキーはタグに残します。手で書くときにいちばんよく間違えるのがそこです。
サンプルJSON
.json ファイルを置く
このタブの中で読みます。アップロードはしません。
手元にある要素を全部入れてください。レコードが一つ増えるたびに推論が絞り込まれます。どれか一つに無いフィールドこそが、省略可能である根拠です。
TypeScript
使い方
手元にあるレコードをできるだけ多く貼り付けます
配列は先頭の要素だけでなく、すべての要素を読んで合わせます。レコードが3件あれば1件のときよりはるかに多くのことが分かります。どれか1件に欠けているという事実こそが、そのフィールドを省略可能にする根拠だからです。
ルートの型に名前を付けます
入れ子のオブジェクトは、それを保持しているキーの名前を取ります。配列なら単数形になるので、`users`からは`User`ができます。自分で名前を決める必要があるのはルートだけです。
出力の下にある件数を読みます
型の数、省略可能なフィールドの数、ユニオンの数、そして合わせたレコードの数が出ます。ユニオンが0より大きければ、あるフィールドが標本の中で違う種類の値を持っていたということなので、結果をコードベースに貼り付ける前に一度見ておく価値があります。
構造体をパッケージに貼り付けます
一部のレコードに無かったフィールドにはタグに`,omitempty`が付き、マーシャルし直すときに無かった値を作り出さないようにします。package宣言は出しません。どこに置くかは書く人が知っています。
よくある質問
数値がすべてfloat64になるのはなぜですか
そうなるのは標本に小数があったときだけです。文書の中の数値がすべて整数だったなら、整数型として出します。idとして使われたJSONの`1`と、丸められた価格の`1`を見分ける方法はないので、標本があるかぎりの根拠のすべてです。
一部のレコードでnullになるフィールドはどうなりますか
ポインタ型になります。Goで「無い、またはnull」と「ゼロ値」を区別する方法がこれです。そのため、値を取り出すときにはnilの検査が要ります。面倒ではありますが、もう一方の案——黙って0や空文字列として読まれる値型——のほうが悪いからです。
Goの識別子として使えないキーはどうなりますか
フィールド名のほうは区切り文字を落とし、各部分の先頭を大文字にして整えます。元のキーは`json:`タグに残り、実際の対応付けはタグが行います。`user-id`は`json:"user-id"`を付けた`UserId`のような形になります。
`time.Time`のフィールドになりますか
なりません。JSONのタイムスタンプは文字列であり、`time.Time`にするとアンマーシャルが受け付ける範囲が変わります。必要なら手でフィールドの型を変えてください。`encoding/json`はRFC 3339の文字列を`time.Time`として自分でパースします。
ここから渡せます
JSONからTypeScript型
JSON to TypeScript
JSONの実例からTypeScriptのインターフェースや型を推論し、省略可能なフィールドとユニオンをまとめます。
JSONからRust構造体
JSON to Rust Structs
JSONの実例からserde属性付きのRust構造体を作り、空や欠けうるフィールドはOptionに、キー名はsnake_caseへのrenameで処理します。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
YAMLフォーマッター・検証
YAML Formatter & Validator
YAMLのインデントを揃えて検証し、パーサを壊すタブやアンカーの誤りに印を付けます。
次の一手
このツールが出したものをそのまま受け取れる道具です。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
JSONからRust構造体
JSON to Rust Structs
JSONの実例からserde属性付きのRust構造体を作り、空や欠けうるフィールドはOptionに、キー名はsnake_caseへのrenameで処理します。
JSONからTypeScript型
JSON to TypeScript
JSONの実例からTypeScriptのインターフェースや型を推論し、省略可能なフィールドとユニオンをまとめます。
Base64エンコード・デコード
Base64 Encoder & Decoder
テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。
curlをコードに変換
curl to Code
curlのコマンドをfetch・axios・Pythonのrequests・Go・PHP・PowerShellのコードに変換します。
文字列のハッシュ
Text Hash
文字列のMD5・SHA-1・SHA-256・SHA-384・SHA-512・CRC-32を計算し、大文字表記とBase64での出力も選べます。