type MyStruct struct { Value json.RawMessage `json:"value"`}var resp *http.Responseif resp, err = http.DefaultClient.Do(req); err == nil { if resp.StatusCode == 200 { var buffer []byte if buffer, err = ioutil.ReadAll(resp.Body); err == nil { mystruct = &MyStruct{} err = json.Unmarshal(buffer, mystruct) } }}fmt.Println(string(mystruct.Value))它产生类似的东西: \u003Chead>\n \u003C/head>\n \u003Cbody>文档在:http : //golang.org/pkg/encoding/json/#Unmarshal说:解组引用的字符串时,无效的 UTF-8 或无效的 UTF-16 代理项对不会被视为错误。相反,它们被 Unicode 替换字符 U+FFFD 替换。我觉得这就是正在发生的事情。我只是看不到答案,因为我对 Go 的经验很少,而且我很累。
3 回答
凤凰求蛊
TA贡献1825条经验 获得超4个赞
您决定使用json 消息中的json.RawMessage键来阻止解析值value。
字符串文字"\u003chtml\u003e"是"<html>".
由于您告诉json.Unmarshal不要解析这部分,它不会解析它并按原样返回给您。
如果要将其解析为 UTF-8 字符串,请将定义更改MyStruct为:
type MyStruct struct {
Value string `json:"value"`
}
- 3 回答
- 0 关注
- 351 浏览
添加回答
举报
0/150
提交
取消