ホームページ >バックエンド開発 >Golang >配列を Go 構造体にマッピングするときに JSON アンマーシャルが失敗するのはなぜですか?

配列を Go 構造体にマッピングするときに JSON アンマーシャルが失敗するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-30 09:12:17967ブラウズ

Why Does JSON Unmarshal Fail When Mapping Arrays to Go Structs?

JSON 配列を Go 構造体にアンマーシャリングできません

プログラマが JSON API からのデータを解析しようとして、次のエラーが発生しました:パニック: json: 配列を Go の型の値にアンマーシャリングできませんmain.Structure."

問題の抜粋:

type Structure struct {
        stuff []interface{}
}

...

decoded := &Structure{}
err = json.Unmarshal(body, decoded)

期待される結果:

インターフェイス オブジェクトのリスト。

実際結果:

パニック: json: 配列を main.Structure 型の Go 値にアンマーシャリングできません

解決策:

問題は次の場合に発生します。 JSON 配列を Go 構造体にアンマーシャリングしようとしています。これを解決するには、次のいずれかを実行できます。

  • スライスへのアンマーシャル:
var data []interface{}
err = json.Unmarshal(body, &data)
  • スライスへのアンマーシャルの構造体:
type Tick struct {
     ID string
     Name string
     ... and so on
}

var data []Tick
err = json.Unmarshal(body, &data)

応答データの構造に一致するように構造体の型をカスタマイズすることで、アンマーシャリング プロセスは JSON 配列を正常に解析します。

以上が配列を Go 構造体にマッピングするときに JSON アンマーシャルが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。