使用 json.Unmarshal 时出现“无效字符 'ï' 寻找值的开头”错误
尝试解析从使用Golang的json.Unmarshal函数进行HTTP请求,可能会出现以下错误发生:
"invalid character 'ï' looking for beginning of value"
当 JSON 响应包含字节顺序标记 (BOM) 字符时,通常会出现此错误。 BOM 标识文本文件的编码,应在解码之前将其删除。
要解决此问题,可以使用以下代码从 JSON 响应中删除 BOM 字符:
body := bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) // Or []byte{239, 187, 191}
一旦删除了 BOM 字符,JSON 响应就可以按预期解组为数据结构。
例如,可以修改以下代码来处理带有 BOM 的 JSON 响应:
body, err := ioutil.ReadAll(response.Body) defer response.Body.Close() if err != nil { return "", tracerr.Wrap(err) } // Remove BOM body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) transTransform = TransformTextResponse{} err = json.Unmarshal(body, &transTransform) if err != nil { return "", tracerr.Wrap(err) }
通过在解析 JSON 响应之前删除 BOM 字符,错误将得到解决,并且可以成功解组数据结构。
以上是如何解决 Golang json.Unmarshal 中的'寻找值开头的无效字符”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!