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>
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.
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>
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!