將UTF-8 字串轉換為[]byte 以進行JSON 解組
要在Go 中解組JSON 字串,我們需要提供[ ] 位元組切片作為輸入。如果我們只有一個 UTF-8 字串,如何將其轉換為 []byte?
簡單轉換以及字串到[]byte 複製
Go 類型系統允許我們直接從字串轉換為[]byte 使用:
s := "some text" b := []byte(s) // b is type []byte
但是,此操作會建立字串的副本,這對於大字串來說效率較低。
使用io.Reader 進行高效率轉換
另一個解決方案是使用strings.NewReader() 建立io.Reader:
s := `{"somekey":"somevalue"}` r := strings.NewReader(s)
接著可以傳遞這個io.Reader到json.NewDecoder() 進行解組,而不創建字串副本:
var result interface{} err := json.NewDecoder(r).Decode(&result)
開銷注意事項
使用strings.NewReader() 和json.NewDecoder() 有一些開銷,所以對於小的JSON 字串,直接轉換為[]byte 可能會更有效率:
s := `{"somekey":"somevalue"}` var result interface{} err := json.Unmarshal([]byte(s), &result)
直接io.Reader輸入
如果JSON 字串輸入可用作io.Reader(例如檔案或網路連接),它可以直接傳遞給json.NewDecoder():
var result interface{} err := json.NewDecoder(myReader).Decode(&result)
這消除了中間轉換或複製的需要。
以上是如何在 Go 中有效地將 UTF-8 字串轉換為 []byte 以進行 JSON 解組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!