ホームページ >バックエンド開発 >Golang >「json: 配列を Go 値にアンマーシャリングできません」エラーを解決するにはどうすればよいですか?

「json: 配列を Go 値にアンマーシャリングできません」エラーを解決するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-04 18:53:11818ブラウズ

How to Resolve the

「配列を Go 値にアンマーシャリングできない」という難問を解明する

問題を理解する:

データを解析しようとするときJSON API から予期しないエラーが発生します: 「パニック: json: アンマーシャルできません」配列を main.Structure 型の Go 値に変換します。」このエラーは、JSON データと定義された Go 構造体の間に不一致があることを示しています。

不一致の特定:

コードを調べると、Structure タイプが次のことを期待していることがわかります。 「スタッフ」フィールドとしてのインターフェース オブジェクトの配列。{}ただし、解析される JSON データは、interface オブジェクトの配列ではなく、配列そのものです。

解決策 1: スライスにアンマーシャルする

不一致を解決するには代わりに、JSON 配列をインターフェース オブジェクトのスライスにアンマーシャリングすることをお勧めします。{}このようにして、JSON 配列構造は Go コード内に保持されます。

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

解決策 2: 特定の構造体フィールドを定義する

または、JSON 応答データが一貫した構造を必要とする場合は、応答に存在するフィールドと正確に一致する Go 構造体を定義することを検討してください。これにより、より構造化されたタイプセーフなアンマーシャリング プロセスが可能になります。

type Tick struct {
     ID string
     Name string
     Symbol string
     Rank string
     Price_USD string
     ... and so on
}

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

これらのアプローチのいずれかを採用することで、アプリケーションは JSON データを正常に解析し、「配列を Go 値にアンマーシャリングできません」エラーを回避できます。

以上が「json: 配列を Go 値にアンマーシャリングできません」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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