ホームページ > バックエンド開発 > Golang > Go で「json.Unmarshal」がエラーを返すのはいつですか?

Go で「json.Unmarshal」がエラーを返すのはいつですか?

Patricia Arquette
リリース: 2024-11-10 11:00:03
オリジナル
462 人が閲覧しました

When Does `json.Unmarshal` Return an Error in Go?

Go で JSON を構造体にアンマーシャルするとエラーが返されるのはどのような場合ですか?

Go では、json.Unmarshal 関数が JSON 形式のデコードを試行しますバイトをターゲット データ構造に取り込みます。ソース JSON 内の一致する名前を持つフィールドを正常に解析して設定しますが、値がターゲットの構造に対応しない場合でもエラーは発生しません。

ただし、json.Unmarshal は次の状況でエラーが発生します。

構文エラー:

JSON 入力が構文的に正しくない場合、json.Unmarshal はエラーを返します。たとえば、必要な引用符が欠落している場合、デコーダは JSON の解析に失敗します。

type A struct {
    Name string `json:"name"`
}
data := []byte(`{"name":what?}`)
err := json.Unmarshal(data, &a)
fmt.Println(err)  // prints character 'w' looking for beginning of value
ログイン後にコピー

JSON Value Not Representable by Target Type:

If JSON 値の型をターゲット構造内の対応するフィールドの型に変換できない場合、json.Unmarshal はエラーを返します。たとえば、JSON ブール値を文字列フィールドに割り当てようとしている場合:

data := []byte(`{"name":false}`)
type B struct {
  Name string `json:"name"`
}
var b B
err = json.Unmarshal(data, &b)
fmt.Println(err) // prints cannot unmarshal bool into Go value of type string
ログイン後にコピー

その他の実装の詳細:

構文エラーと型変換エラーとは別に、 json.Unmarshal は、他のまれな状況でもエラーを返す場合があります。より包括的なリストについては、Go ドキュメントを参照してください。

以上がGo で「json.Unmarshal」がエラーを返すのはいつですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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