Go の埋め込み構造への JSON のアンマーシャリング
JSON データの埋め込み構造への逆シリアル化は、Golang で課題となる可能性があります。 struct の例を見てみましょう:
<code class="go">type Outer struct { Inner Num int } type Inner struct { Data string }</code>
json.Unmarshal(data, &Outer{}) を使用すると、Num フィールドは無視され、Inner フィールドのみがアンマーシャリングされます。この問題が発生する理由を理解するには、Inner が アウター に埋め込まれていることに注意することが重要です。
JSON のアンマーシャリング中、ライブラリはアウターのアンマーシャラーを呼び出し、次にインナーのアンマーシャラーを呼び出します。その結果、Inner.UnmarshalJSON 関数は JSON 文字列全体を受け取り、Inner のみで処理します。
この問題を解決するには、Inner を Outer の明示的なフィールドにします。これにより、JSON アンマーシャリング中に、内部フィールドが適切にアンマーシャリングされ、JSON データに基づいて Num フィールドが設定されることが保証されます。
<code class="go">Outer struct { I Inner // Make Inner an explicit field Num int `json:"Num"` }</code>
この変更により、JSON データを外部構造体に正しくアンマーシャリングできるようになります。 Inner フィールドと Num フィールドの両方。
以上がGo で JSON を埋め込み構造体にアンマーシャリングするときに「Num」フィールドが無視されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。