Maison > développement back-end > Golang > le corps du texte

Comment convertir efficacement une chaîne UTF-8 en [] octet pour le démarshalling JSON dans Go ?

Linda Hamilton
Libérer: 2024-10-30 21:50:02
original
360 Les gens l'ont consulté

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

Conversion de chaînes UTF-8 en []octet pour le démarshalling JSON

Pour démarshaler une chaîne JSON dans Go, nous devons fournir un [ ]tranche d'octets en entrée. Si nous n'avons qu'une chaîne UTF-8, comment pouvons-nous la convertir en []byte ?

Conversion simple et chaîne en []byte Copy

Le type Go Le système nous permet de convertir directement une chaîne en []octet en utilisant :

s := "some text"
b := []byte(s) // b is type []byte
Copier après la connexion

Cependant, cette opération crée une copie de la chaîne, ce qui peut être inefficace pour les grandes chaînes.

Conversion efficace à l'aide de io.Reader

Une solution alternative consiste à créer un io.Reader à l'aide de strings.NewReader() :

s := `{"somekey":"somevalue"}`
r := strings.NewReader(s)
Copier après la connexion

Ce io.Reader peut ensuite être transmis à json.NewDecoder() pour le désorganisation sans créer de copie de chaîne :

var result interface{}
err := json.NewDecoder(r).Decode(&result)
Copier après la connexion

Considérations générales

L'utilisation de strings.NewReader() et json.NewDecoder() a une certaine surcharge, donc pour les petites chaînes JSON, la conversion directe en []byte peut être plus efficace :

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

Entrée directe io.Reader

Si la chaîne JSON l'entrée est disponible en tant que io.Reader (par exemple, un fichier ou une connexion réseau), elle peut être transmise directement à json.NewDecoder() :

var result interface{}
err := json.NewDecoder(myReader).Decode(&result)
Copier après la connexion

Cela élimine le besoin de conversions ou de copies intermédiaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!