JSON サンプルを貼り付けて、対応する Go の型宣言をコピーできます。構造体・スライス・スカラーと json タグを生成し、ネストしたオブジェクトはインラインか名前付き型を選べます。
ブラウザ内でローカルに実行JSON サンプルを貼り付けると、それに対応する Go の型宣言を生成します。構造体、スライス、スカラーのフィールド、そして各フィールドとキーを結び付ける json タグが出力されます。名前は Go の慣習に従い、ネストしたオブジェクトはインラインのままか名前付き型にするかを選べ、同じ形の構造は 1 回だけ宣言されます。
変換はこのブラウザタブの中で実行されます。アップロードもリクエストも行わないため、オフラインでも動作し、第三者に送れないデータでも使えます。
整数は 32 ビットに収まる場合は int、収まらない場合は int64 になり、小数は float64 になります。1.0 のように整数に見える値も float64 のまま扱われ、整数と小数が混在する配列は []float64 になります。共通の型を持てない値(数値と文字列、オブジェクトと数値など)が混在する配列は []interface{} になります。
オブジェクトの配列はすべてのキーを合わせた 1 つの構造体に統合され、一部の要素にしか存在しないキーには omitempty が付きます。ある要素ではオブジェクト、別の要素ではスカラーであるフィールドは interface{} になります。RFC 3339 形式の文字列(2024-05-06T07:08:09Z)は time.Time になるため、time の import を手動で追加する必要があります。
フィールド名は Go のエクスポート名になります。user-id は UserID になり、ID、URL、API、HTTP などの一般的な頭字語は大文字のまま保たれます。元のキーは構造体タグにそのまま残るので、生成されたコードは貼り付けた payload と一致します。
同じ Go 名になる 2 つのキーには連番が付きます(UserID と UserID2)。記号だけのキーは Field、Field2 のようになります。キーに含まれる引用符やバックスラッシュはタグ内でエスケープされ、出力が有効な Go のまま保たれます。
出力されるのは宣言だけです。package 句も import もメソッドもなく、ここでコンパイルも行われません。型が表すのは貼り付けたサンプルでありスキーマではありません。null や欠落したフィールドは入力から推論されるため、より大きな payload で null 許容性と数値の幅を確認してください。
大きなドキュメントもブラウザ内で解析され、端末のメモリの制約を受けます。結果は確認前提の出発点として扱い、型名の調整やサンプルに現れなかった項目の追加を行ったうえで、コンパイラに通してください。