"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment convertir des chaînes UTF-8 en []byte pour le démarshalling JSON dans Go ?

Comment convertir des chaînes UTF-8 en []byte pour le démarshalling JSON dans Go ?

Publié le 2024-11-08
Parcourir:936

How to Convert UTF-8 Strings to []byte for JSON Unmarshalling in Go?

Désagrégation des chaînes UTF-8 en []octet

Lorsque vous travaillez avec JSON, la fonction de démarshalage nécessite une entrée de type []octet. Cependant, nos données pourraient être stockées sous forme de chaîne UTF-8. Cet article explique comment convertir une chaîne UTF-8 en []octet pour une désorganisation réussie.

Conversion à l'aide de []octet(s)

Selon la spécification Go , une chaîne peut être convertie en []octet en utilisant un simple transtypage :

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

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

Utilisation de io.Reader pour une utilisation efficace Unmarshal

Une approche alternative consiste à utiliser un io.Reader créé à partir de la chaîne :

s := `{"somekey":"somevalue"}`
reader := strings.NewReader(s)
decoder := json.NewDecoder(reader)
var result interface{}
decoder.Decode(&result)

Cette méthode évite de copier la chaîne et est plus efficace pour les entrées volumineuses.

Considérations pour différents scénarios

  • Pour les petits textes JSON, la conversion directe en []octet à l'aide de []octet(s) est acceptable.
  • Pour les gros textes JSON ou lorsque vous travaillez avec io.Readers, l'utilisation de strings.NewReader et json.NewDecoder offre une meilleure efficacité.

En résumé, la conversion de chaînes UTF-8 en []byte pour le démarshalling implique soit une diffusion directe, soit l'utilisation d'un io.Reader pour une gestion efficace des entrées volumineuses. Le choix dépend des exigences spécifiques de l'application.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3