将 UTF-8 字符串转换为字节数组
解组 JSON 需要字节切片输入,而字符串在 Go 中存储为 UTF-8 。本文探讨了 UTF-8 字符串到字节数组的高效转换。
直接转换
Go 允许将字符串转换为字节切片,创建字符串字节的副本:
<code class="go">s := "some text" b := []byte(s)</code>
但是,对于大字符串,由于复制,这种方法效率较低。
使用 io.Reader
一种有效的替代方法使用 strings.NewReader() 创建一个 io.Reader,它从字符串中读取而不进行复制:
<code class="go">s := `{ "somekey": "somevalue" }` var result interface{} err := json.NewDecoder(strings.NewReader(s)).Decode(&result)</code>
这种方法避免了复制字符串。
小型 JSON 文本
对于小的 JSON 文本,直接转换仍然是一个快速的选择:
<code class="go">s := `{ "somekey": "somevalue" }` var result interface{} err := json.Unmarshal([]byte(s), &result)</code>
注意:从 io.Reader 读取 JSON 时(例如,文件或网络),将 io.Reader 直接传递给 json.NewDecoder(),无需中间字符串读取。
以上是Go中如何高效地将UTF-8字符串转换为字节数组?的详细内容。更多信息请关注PHP中文网其他相关文章!