Maison > développement back-end > Golang > Comment gérer les données binaires dans l'encodage Go JSON ?

Comment gérer les données binaires dans l'encodage Go JSON ?

Patricia Arquette
Libérer: 2024-11-05 17:30:02
original
462 Les gens l'ont consulté

How to Handle Binary Data in Go JSON Encoding?

Encodage de []chaînes d'octets en JSON à l'aide de Go

Problème : encodage JSON inattendu de données binaires

Dans Go, une tranche de []octets stocke données binaires brutes. Lorsque vous tentez d'encoder une structure contenant des champs d'octets [] en JSON à l'aide de json.Marshal(), le JSON résultant contient une représentation sous forme de chaîne inattendue du contenu de la tranche au lieu des données binaires d'origine. Par exemple :

<code class="go">type Msg struct {
    Content []byte
}

func main() {
    msg := Msg{[]byte("Hello")}
    json, _ := json.Marshal(msg)
    fmt.Println(string(json)) // Prints {"Content":"SGVsbG8="}
}</code>
Copier après la connexion

Raison du codage en base64

json.Marshal() encode des tranches d'octets sous forme de chaînes codées en base64, car JSON n'a pas de représentation native pour les octets bruts. L'encodage Base64 représente les données binaires à l'aide d'une séquence de caractères ASCII imprimables.

Solution : Récupération des données binaires d'origine

Pour récupérer les données binaires d'origine de la chaîne codée en base64 dans le JSON, décodez simplement le chaîne en utilisant la fonction base64.StdEncoding.DecodeString :

<code class="go">import "encoding/base64"

func main() {
    ...
    decodedBytes, _ := base64.StdEncoding.DecodeString(msg.Content)
    fmt.Println(string(decodedBytes)) // Prints "Hello"
}</code>
Copier après la connexion

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