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

JSON で配列を Go 構造体にアンマーシャリングするとパニックが発生するのはなぜですか?

Linda Hamilton
リリース: 2024-12-16 10:49:10
オリジナル
779 人が閲覧しました

Why Does JSON Unmarshaling an Array into a Go Struct Cause a Panic?

パニック: JSON 配列を Go Struct にアンマーシャルします

JSON API からのデータを解析しようとすると、エラーが発生しました: 「パニック: json: 配列を main.Structure 型の Go 値にアンマーシャリングできません。」この問題は、JSON 配列を Go 構造体にアンマーシャリングするときに発生します。

コード:

type Structure struct {
        stuff []interface{}
}

func main() {
        // ...

        decoded := &Structure{}
        err = json.Unmarshal(body, decoded)
}
ログイン後にコピー

期待される結果:

コードがインターフェースのリストを返すことを期待していましたオブジェクト.

実際の結果:

代わりに、JSON 配列を Structure Go 値にアンマーシャリングできないことを示すエラーを受け取りました。

解決策:

この問題を解決するには、2 つのことを検討してください。アプローチ:

  1. スライスへのアンマーシャル:

    行を次のように置き換えます:

    decoded := &Structure{}
    ログイン後にコピー

    :

    var data []interface{}
    ログイン後にコピー

    これにより、JSON 配列がスライスにアンマーシャリングされます。インターフェイス。

  2. 構造体のスライスへのアンマーシャル:

    応答データ構造用の特定の構造体を作成します。例:

    type Tick struct {
      ID string
      Name string
      Symbol string
      Rank string
      Price_USD string
    }
    ログイン後にコピー

    次に、次の構造体のスライスにアンマーシャルします:

    var data []Tick
    err = json.Unmarshal(body, &data)
    ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート