Maison >développement back-end >Golang >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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 10:08:02743parcourir

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

Désorganisation 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 un démarshalling réussi.

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

Selon la spécification Go , une chaîne peut être convertie en []byte à l'aide d'un simple transtypage :

<code class="go">s := "some text"
b := []byte(s)</code>

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

Utiliser io.Reader pour un Unmarshal efficace

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

<code class="go">s := `{&quot;somekey&quot;:&quot;somevalue&quot;}`
reader := strings.NewReader(s)
decoder := json.NewDecoder(reader)
var result interface{}
decoder.Decode(&result)</code>

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, conversion directe en []octet à l'aide de []octet(s) est acceptable.
  • Pour les textes JSON volumineux ou lorsque vous travaillez avec io.Readers, l'utilisation de strings.NewReader et json.NewDecoder offre une meilleure efficacité.

En résumé, la conversion des chaînes UTF-8 to []byte pour le démarshalling implique soit un casting direct, 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.

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!

Déclaration:
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