Maison > Article > développement back-end > Comment rassembler un champ []byte en tant que chaîne dans l'encodage Go JSON ?
Marshaling JSON []octet en tant que chaînes dans Go
Lors de l'encodage d'une structure contenant des champs []octets dans JSON, une représentation de chaîne inattendue peut résultat. Dans cet encodage, le champ []byte est marshalé comme une chaîne codée en base64, comme indiqué dans la documentation :
"Les valeurs de tableau et de tranche sont codées sous forme de tableaux JSON, sauf que []byte est codé en base64- chaîne encodée et une tranche nulle est encodée comme l'objet JSON nul. " est converti en []byte slice helloSlc et attribué au champ Content de l'objet obj Msg :Lors du codage de l'obj en JSON à l'aide de json.Marshal, le JSON résultant contient la chaîne codée en base64 représentation du champ []byte :
<code class="go">type Msg struct { Content []byte }</code>Sortie :
<code class="go">helloStr := "Hello" helloSlc := []byte(helloStr) obj := Msg{helloSlc}</code>Pour obtenir la valeur de chaîne d'origine "Bonjour" dans la sortie JSON, le champ []byte doit être explicitement décodé à partir de sa représentation codée en base64 avant l'encodage en JSON. Ceci peut être réalisé en utilisant le package encoding/base64 :
<code class="go">json, _ := json.Marshal(obj) fmt.Println(string(json))</code>Sortie :
{"Content":"SGVsbG8="}
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!