Heim > Artikel > Backend-Entwicklung > Wie marshaliere ich ein []byte-Feld als String in der Go-JSON-Codierung?
Marshaling von JSON []Byte als Strings in Go
Beim Codieren einer Struktur, die []Byte-Felder enthält, in JSON kann es zu einer unerwarteten String-Darstellung kommen Ergebnis. Bei dieser Kodierung wird das []Byte-Feld als Base64-kodierte Zeichenfolge gemarshallt, wie in der Dokumentation angegeben:
„Array- und Slice-Werte werden als JSON-Arrays kodiert, außer dass []Byte als Base64-kodiert wird.“ codierte Zeichenfolge, und ein Null-Slice wird als Null-JSON-Objekt codiert " wird in ein []Byte-Slice helloSlc konvertiert und dem Inhaltsfeld des obj-Msg-Objekts zugewiesen:Beim Codieren von obj in JSON mit json.Marshal enthält das resultierende JSON die Base64-codierte Zeichenfolge Darstellung des []Byte-Feldes:
<code class="go">type Msg struct { Content []byte }</code>Ausgabe:
<code class="go">helloStr := "Hello" helloSlc := []byte(helloStr) obj := Msg{helloSlc}</code>Um den ursprünglichen Zeichenfolgenwert „Hallo“ in der JSON-Ausgabe zu erhalten, muss das []Byte-Feld vorhanden sein explizit aus seiner Base64-kodierten Darstellung dekodiert, bevor es in JSON kodiert wird. Dies kann mit dem Paket „encoding/base64“ erreicht werden:
<code class="go">json, _ := json.Marshal(obj) fmt.Println(string(json))</code>Ausgabe:
{"Content":"SGVsbG8="}
Das obige ist der detaillierte Inhalt vonWie marshaliere ich ein []byte-Feld als String in der Go-JSON-Codierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!