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 := `{"somekey":"somevalue"}` 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
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!