首頁 > 後端開發 > Golang > 主體

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

Linda Hamilton
發布: 2024-10-30 21:50:02
原創
360 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!