ホームページ > バックエンド開発 > Golang > Go で JSON を逆シリアル化するときにインターフェイス アサーション エラーを回避するにはどうすればよいですか?

Go で JSON を逆シリアル化するときにインターフェイス アサーション エラーを回避するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-14 13:53:02
オリジナル
362 人が閲覧しました

How to Avoid Interface Assertion Errors when Deserializing JSON in Go?

JSON 逆シリアル化におけるインターフェイス アサーションについて

Go では、JSON データを特定のデータ構造に逆シリアル化すると、インターフェイス変換エラーが発生することがあります。これは通常、インターフェイス型を別の構造体型にアサートしようとしたときに発生します。

次の例を考えてみましょう。

type Data struct {
    Content string
    Links   []string
}
ログイン後にコピー

JSON を Data 型の変数に逆シリアル化する場合、アサートすることが不可欠です。インターフェイス変数 (anInterface) に予期されるデータ型が含まれていることを確認します。次の式を割り当てると、ランタイム エラーが発生します:

AData2 = anInterface.(Data)
ログイン後にコピー

このエラーは、Go が anInterface が Map[string]interface{} であることを期待しているのに、実際には Data 型のオブジェクトが含まれているために発生します。これを解決するには、anInterface がデータと構造的に互換性のある値を参照していることを確認することが重要です。

正しい逆シリアル化アプローチ

JSON データをデータに逆シリアル化する適切な方法データ構造は、その変数に直接アンマーシャルすることです:

var AData2 Data

err := json.Unmarshal([]byte(value), &AData2)
if err != nil {
    panic(err)
}
ログイン後にコピー

そうすることで、Go JSON と目的のデータ型の間の変換を自動的に処理し、実行時に型アサーション エラーが発生しないようにします。

以上がGo で JSON を逆シリアル化するときにインターフェイス アサーション エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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