Conversion de chaînes UTF8 en tableaux d'octets pour le démarshalage JSON
Lors du démarshalage d'une chaîne JSON à l'aide de la fonction Unmarshal, un paramètre représentant un tableau d'octets est requis. Cet article fournit une méthode efficace pour convertir une chaîne UTF8 en un tableau d'octets compatible.
Processus de conversion
Le langage Go permet la conversion directe de chaînes en tableaux d'octets, comme spécifié dans la spécification du langage. Le code suivant illustre cette conversion :
<code class="go">s := "some text" b := []byte(s) // b is of type []byte</code>
Cependant, cette conversion peut être inefficace pour les grandes chaînes en raison de l'opération de copie qu'elle effectue. Une approche alternative consiste à utiliser un io.Reader pour éviter la surcharge de copie. Cela implique de créer un io.Reader en utilisant strings.NewReader() et de le transmettre à json.NewDecoder() à la place :
<code class="go">s := `{"somekey":"somevalue"}` var result interface{} err := json.NewDecoder(strings.NewReader(s)).Decode(&result) fmt.Println(result, err)</code>
Cette méthode permet au programme d'accéder aux données JSON sans créer de copie de l'entrée. string.
Considérations sur les performances
La surcharge associée à la création d'un io.Reader et à l'utilisation de json.NewDecoder() doit être prise en compte pour les petits textes JSON. Dans de tels cas, la conversion directe via []octet(s) reste une option viable car elle offre des performances comparables.
Conclusion
En fonction de la taille et de la source de l'entrée JSON, différentes méthodes peuvent être utilisées pour convertir les chaînes UTF8 en tableaux d'octets pour le démarshaling. En tirant parti de l'approche de conversion directe ou io.Reader, les développeurs peuvent traiter efficacement les données JSON dans leurs applications Go.
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!