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 サイトの他の関連記事を参照してください。