ホームページ >バックエンド開発 >Golang >「json: 配列を main.Structure 型の Go 値にアンマーシャリングできません」が発生する理由と修正方法

「json: 配列を main.Structure 型の Go 値にアンマーシャリングできません」が発生する理由と修正方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-02 00:44:13916ブラウズ

Why Does

配列と構造体型のアンマーシャリング

JSON データを構造体に解析しようとする場合、データ構造と構造体の互換性を確保することが重要です。ターゲットタイプ。次のエラー メッセージ:

panic: json: cannot unmarshal array into Go value of type main.Structure

は、アプリケーションが配列を JSON から別の型を予期する構造体にアンマーシャリングしようとしていることを示します。

この問題を解決するには、次の解決策を検討してください。 :

  • アンマーシャルスライス:

JSON データがオブジェクトの配列の場合、JSON データの構造に応じて、インターフェイスのスライスまたは特定の構造体のスライスにアンマーシャリングします。

var data []interface{}
err = json.Unmarshal(body, &data)

// Unmarshal to specific structs:
type Tick struct {
     ID string
     Name string
     ...
}

var data []Tick
err = json.Unmarshal(body, &data)
  • を変更します構造体:

既存の構造体を保持する必要がある場合は、配列を受け入れるようにそのフィールドの型を変更することを検討してください:

type Structure struct {
     stuff [][]interface{} // Change to a slice of slices
}

以上が「json: 配列を main.Structure 型の Go 値にアンマーシャリングできません」が発生する理由と修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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