Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar Rentetan UTF-8 dengan Cekap kepada []bait untuk JSON Unmarshalling dalam Go?

Bagaimana untuk Menukar Rentetan UTF-8 dengan Cekap kepada []bait untuk JSON Unmarshalling dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 21:50:02361semak imbas

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

Menukar Rentetan UTF-8 kepada []bait untuk JSON Unmarshalling

Untuk menyahmarshal rentetan JSON dalam Go, kami perlu menyediakan [ ]potongan bait sebagai input. Jika kita hanya mempunyai rentetan UTF-8, bagaimana kita boleh menukarnya kepada []bait?

Penukaran Mudah dan Rentetan kepada []bait Salin

Jenis Go sistem membenarkan kami menukar terus daripada rentetan kepada []bait menggunakan:

s := "some text"
b := []byte(s) // b is type []byte

Walau bagaimanapun, operasi ini mencipta salinan rentetan, yang boleh menjadi tidak cekap untuk rentetan besar.

Penukaran Cekap Menggunakan io.Reader

Penyelesaian alternatif melibatkan mencipta io.Reader menggunakan rentetan.NewReader():

s := `{"somekey":"somevalue"}`
r := strings.NewReader(s)

io.Reader ini kemudiannya boleh diluluskan kepada json.NewDecoder() untuk unmarshalling tanpa membuat salinan rentetan:

var result interface{}
err := json.NewDecoder(r).Decode(&result)

Overhead Considerations

Menggunakan strings.NewReader() dan json.NewDecoder() mempunyai beberapa overhed, jadi untuk rentetan JSON kecil, menukar kepada []bait secara langsung mungkin lebih cekap:

s := `{"somekey":"somevalue"}`
var result interface{}
err := json.Unmarshal([]byte(s), &result)

Input Pembaca io Langsung

Jika rentetan JSON input tersedia sebagai io.Reader (cth., fail atau sambungan rangkaian), ia boleh dihantar terus ke json.NewDecoder():

var result interface{}
err := json.NewDecoder(myReader).Decode(&result)

Ini menghapuskan keperluan untuk penukaran atau salinan perantaraan.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan UTF-8 dengan Cekap kepada []bait untuk JSON Unmarshalling dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn