Go 中 JSON Unmarshal to Structure 何时返回错误?
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 值无法由目标类型表示:
如果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中文网其他相关文章!