将 UTF-8 字符串转换为字节数组
解组 JSON 需要字节切片输入,而字符串在 Go 中存储为 UTF-8 。本文探讨了 UTF-8 字符串到字节数组的高效转换。
直接转换
Go 允许将字符串转换为字节切片,创建字符串字节的副本:
s := "some text"
b := []byte(s)
但是,对于大字符串,由于复制,这种方法效率低下。
使用 io.Reader
一个有效的替代方法是使用 strings.NewReader() 创建一个 io.Reader,它从字符串中读取而不复制:
s := `{ "somekey": "somevalue" }`
var result interface{}
err := json.NewDecoder(strings.NewReader(s)).Decode(&result)
此方法避免复制字符串。
小型 JSON 文本
对于小型 JSON 文本,直接转换仍然是一个快速选择:
s := `{ "somekey": "somevalue" }`
var result interface{}
err := json.Unmarshal([]byte(s), &result)
注意: 从 io.Reader(例如文件或网络)读取 JSON 时,传递 io.err := json.Unmarshal([]byte(s), &result)
Reader 直接读取 json.NewDecoder(),无需中间字符串读取。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3