首頁  >  文章  >  後端開發  >  如何在 Go 中有效地將 UTF-8 字串轉換為 []byte 以進行 JSON 解組?

如何在 Go 中有效地將 UTF-8 字串轉換為 []byte 以進行 JSON 解組?

Linda Hamilton
Linda Hamilton原創
2024-10-30 21:50:02361瀏覽

How to Efficiently Convert a UTF-8 String to []byte for JSON Unmarshalling in Go?

將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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn