同じ用途のサンプルをまとめる
同じレスポンス形式の複数レコードを配列に入れます。別のプロパティにある似たオブジェクトを同じ型へ自動統合することはありません。
型生成
2件のサンプルで異なるフィールドを確認してください。出力にはパッケージ宣言と必要なimportを含めます。
解析と生成はブラウザー内で行い、入力のアップロードや保存はしません。
3宣言・2ポインタ型
JSONからGo構造体を起こすときは、同じAPIの複数レスポンスを配列にまとめると便利です。1件では分からないフィールドの欠落やnull、型の違いも推論に反映できます。
生成結果は確認用の初稿です。サンプルに出てこない値や必須項目、業務上の制約まで判断するものではありません。
JSONからGo構造体への変換では同じ配列位置の全要素を調べます。2件目にしかないキーも残し、型が分かる値と欠落やnullの組み合わせにはポインタを使えます。
int64範囲内の通常の整数だけをint64にします。小数、指数表記、範囲外の整数はjson.Numberとして扱い、JavaScriptの浮動小数点数を経由して桁を失うことを避けます。
同じレスポンス形式の複数レコードを配列に入れます。別のプロパティにある似たオブジェクトを同じ型へ自動統合することはありません。
日時の元表記が必要なら日時推論をオフにします。「ネスト型に名前を付ける」をオフにすると構造体をインライン化できます。タグを外すと元キーとの対応も失います。
自動生成は変更後350ミリ秒待ちます。オフなら生成ボタンかCtrl/Cmd+Enterを使用します。入力や設定を変えると、成功するまでコピーと保存が無効になります。
Go構造体変換ではsnake_caseやcamelCaseから大文字始まりのASCII名を作り、IDなどの略語は維持します。衝突には数字を付け、タグを有効にすれば対応可能な元キーを保持します。
型が分かるスカラーや構造体にnullや欠落があればポインタ型にします。スライスとマップはそのままnilを表せます。nullだけならanyであり、ポインタでも欠落と明示的なnullは区別できません。
1.0や1e3は数学的には整数でもjson.Numberです。encoding/jsonがその表記をint64へ直接デコードできないためです。演算前にはNumberの変換エラーも確認してください。
完全なRFC3339で実在する日付だけをtime.Timeに推論し、小数秒は9桁までに制限します。その位置の全非null文字列が条件を満たす必要があります。ルートの型別名は元型のメソッドを保持します。
公開可能な大文字始まりのASCII名に変え、IDなどの略語を保ちます。同名になる場合は数字を付けます。有効なJSONタグが元のキーを結び付けるため、タグを外す場合はデコード時の名前を確認してください。
既知のスカラーや構造体なら既定でポインタを使い、nullしかなければanyです。スライスとマップはnilを表せるため追加のポインタは不要です。欠落とnullの三状態追跡は行いません。
通常の整数表記でint64範囲内ならint64、それ以外はjson.Numberです。小数や指数を一度浮動小数点へ変換してから判定することはありません。
同じ位置に文字列と数値など互換性のない値があればanyになります。配列内の全要素を調べるので、後から出る異なる型も結果に含まれます。
JSONからGo構造体への変換で、公開フィールド名、元キーのタグ、ネストの宣言をまとめて下書きできます。ただし必須条件や業務ルールは自分のプロジェクトで検証してください。
見直したい推論例がありますか?