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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-19 12:47:02482ブラウズ

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

Go で json.Unmarshal がエラーを返すのはどのような場合ですか?

Go では、json.Unmarshal 関数が JSON 文字列を構造体に解析します。 , ただし、常にエラーが返されるわけではありません。ただし、特定の状況ではエラーが返されます。

エラーが返されない場合

JSON デコーダは通常、ソース内の値がエラーを返さない場合にはエラーを報告しません。ターゲット内のそれらと一致しません。たとえば、ソースに「status」という名前のフィールドが含まれているが、ターゲットには含まれていない場合、エラーは発生しません。

Error Cases

json.Unmarshal は返します。次のシナリオでのエラー:

  • 構文エラー: 引用符や句読点の欠落など、JSON 文字列の形式が不正な場合。
  • JSON 値が正しくないターゲット型で表現可能: JSON 値をターゲット構造体の対応するフィールド型に変換できない場合。たとえば、ブール値を文字列フィールドにアンマーシャリングしようとします。

エラーケースの例

type A struct {
    Name string `json:"name"`
}

var jsonString string = `{ "status": "false" }'`
var a A
error := json.Unmarshal([]byte(jsonString), &a)

fmt.Println(err) // prints cannot unmarshal bool into Go value of type string

この例では、エラーがスローされます。ソース JSON にはブール型の「ステータス」フィールドがありますが、ターゲット構造体には対応するブール型フィールドがないためです。

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

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