開発者 / JSON
JSONからGo構造体へ
JSONサンプルを貼り付けると、公開フィールド名、Goのリンターが推奨する頭字語、jsonタグを使ったGo構造体定義を生成します。コードにそのまま貼り付けて使えます。
JSONからGo構造体へ: この変換ツールはブラウザ上でJSONを読み取り、各オブジェクトに対応する構造体を生成します。キーは、golintが推奨する形式に従い、ID、URL、HTTPなどの頭字語を大文字で表した公開CamelCase名になります。各フィールドには元のキーを保持したjsonタグが付き、レイアウトはgofmtの形式で整えられます。配列内のオブジェクトは統合されるため、一部のオブジェクトにないキーにはomitemptyが付き、nullになることがあるキーはポインターになります。同じ場所に小数が現れない限り、整数はint64になり、小数が現れる場合はfloat64になります。 サーバーへのファイルアップロードは一切なく、100%ブラウザ内でローカル実行します。
- カテゴリ
- 開発者ツール
- 実行回数
- ブラウザ内で
- コスト
- 無料 · 登録不要
- 提供状況
- すぐに使えます
完全にブラウザ内で実行します
Go
type User struct {
ID int64 `json:"id"`
UserName string `json:"user_name"`
AvatarURL string `json:"avatar_url"`
Score float64 `json:"score"`
Tags []string `json:"tags"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
ZipCode string `json:"zip_code"`
}配列内の一部のオブジェクトにないキーにはomitemptyが付与され、nullになることがあるキーはポインタになります。サンプルに含まれる内容だけが示されるため、APIのドキュメントと型を照合してください。
サンプルから型へ
Goはencoding/jsonを使ってJSONを構造体にデコードします。各キーはjsonタグに基づいてフィールドに対応付けられ、タグがない場合は大文字小文字を無視して名前で対応付けられます。値が設定されるのは、先頭が大文字のエクスポートされたフィールドだけです。そのため、ここではすべてのフィールドを大文字で始め、タグには元のキーを保持しています。
サンプルから分かるのは、その中に含まれている内容だけです。メールアドレスを持たないユーザーが1人いるユーザー一覧なら、変換ツールはemailが任意であると判断できますが、単一のオブジェクトからは判断できません。代表的なオブジェクトが複数ある場合は、配列に入れて貼り付け、結果をAPIのドキュメントと照合してください。長いレスポンスの構造を先に確認するには、JSON formatterが役立ちます。
他の言語とスキーマ
同じサンプルをJSON to TypeScriptコンバーターでTypeScriptのインターフェースに変換すれば、同じAPIを読み取るフロントエンドに利用できます。また、境界でペイロードを検証するためのJSON Schemaにも変換できます。
使い方
- APIレスポンスなどのJSONオブジェクトまたは配列を貼り付けます。
- トップレベルの型名を指定し、構造体を分けるかネストするかを選択します。
- Goコードをコピーします。
プライバシーと制限事項
JSONはブラウザ上で変換され、アップロードされることはありません。
関連ツール
よくある質問
user_idがUserIdではなくUserIDになるのはなぜですか?
Goのスタイルでは、頭字語を1つの大文字表記で書くため、UserID、APIKey、AvatarURLのようになります。この変換ツールは、このルールを広めたリンターであるgolintの頭字語リストを使用しています。
フィールドにomitemptyやポインターが付くのはいつですか?
サンプルがオブジェクトの配列で、一部のオブジェクトにキーがない場合、そのフィールドにomitemptyが付きます。これにより、空の値はマーシャリング時に省略されます。一部のオブジェクトでキーがnullの場合、そのフィールドはポインターになり、nilでnullを表せます。すべてのフィールドにomitemptyを追加することもできます。
なぜint64とfloat64なのですか?
JSONには数値型が1つしかありません。小数点なしで書かれた値はint64になり、小数を含む値はfloat64になります。IDが2^53を超える可能性がある場合や、実際には文字列を装った値である場合は、型を手動で変更してください。サンプルから分かるのは、そこに含まれる値だけです。
nullや空の配列はどうなりますか?
判断材料がないため、常にnullのフィールドや空の配列には、あらゆる値を受け入れる型any(interface{})が割り当てられます。実際の型が分かっている場合は、その型に置き換えてください。
無料ツール · ブラウザ内で · アカウント不要