Maison >développement back-end >Golang >Pourquoi « json.Marshal » de Go encode-t-il « []byte » en tant que chaîne Base64 ?
Marshaling []byte vers JSON
Dans Go, le marshaling []byte vers JSON diffère légèrement des autres types de données. Au lieu de coder directement les octets sous forme de tableau, le package JSON code []byte sous forme de chaîne codée en base64. Ce comportement est explicitement indiqué dans la documentation pour encoding/json :
Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON object.
Base64-Encoded String Output
Dans votre cas, la sortie de json.Marshal( groupe) contient « AAAAQID ». Cela représente l'encodage base64 de votre []byte slice :
originalBytes := []byte{0, 0, 0, 1, 2, 3} encodedString := base64.StdEncoding.EncodeToString(originalBytes) fmt.Println(encodedString) // Output: AAAAAQID
Décodage des données Base64
Pour récupérer les valeurs []byte d'origine de la chaîne encodée, vous peut décoder les données base64 :
decodedBytes, err := base64.StdEncoding.DecodeString("AAAAAQID") if err != nil { // Handle error } fmt.Println(decodedBytes) // Output: [0 0 0 1 2 3]
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!